Как фильтровать методы с помощью Java-отражения - PullRequest
3 голосов
/ 05 декабря 2011

Я хочу получить все методы из класса, но исключаю унаследованные методы, такие как: wait, toString, hash и т. Д.

Есть ли встроенный способ сделать это или мне нужно определить черный список и сравнить имя метода с ним?

Ответы [ 4 ]

5 голосов
/ 05 декабря 2011

Вы можете игнорировать такие методы, как

for(Method method: clazz.getMethods()) {
    if(method.getDeclaringClass() == Object.class) continue;

}

Примечание: сюда будут включены методы, переопределенные в подклассе.

Если вам не нужны какие-либо унаследованные методы, вы можете использовать

for(Method method: clazz.getDeclaredMethods()) {
4 голосов
/ 05 декабря 2011

Использование MyClass.getDeclaredMethods()

0 голосов
/ 05 декабря 2011

Для этого вы можете использовать коллекцию общих .

Вам просто нужно объявить предикат w, а затем использовать:

CollectionUtils.filter(collection, predicate);

, где collection - пакет методов.Предикат - это логическая функция, принимающая элемент в списке

0 голосов
/ 05 декабря 2011

clazz.getDeclaredMethods () будет доставлять методы, определенные текущим классом (и, таким образом, эффективно исключать унаследованные).Тем не менее, типичный шаблон состоит в том, чтобы пройти вверх по иерархии классов и исключить те, которые приходят из Object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...