Получить методы класса с аннотацией с помощью org.refelections - PullRequest
0 голосов
/ 15 февраля 2012

Я использовал org.reflections (http://code.google.com/p/reflections/) в моем проекте для загрузки классов с определенными аннотациями. Теперь у меня есть класс, и мне нужно получить все методы с аннотациями, которые я сделал сам. Но когда я создаю объект Reflections, он запрашивает только имя пакета, поэтому, если бы я использовал метод getMethodsAnnotatedWith, он бы получил все методы из заданных классов пакетов, но я хочу получить методы из своего класса. Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Вот что вы можете сделать:

    final Class<?> clazz = Class.forName("com.your.SampleClass");
    final Method[] declaredMethods = clazz.getDeclaredMethods();
    for (final Method method : declaredMethods)
    {
        if (method.isAnnotationPresent(YourAnnotationClass .class))
        {
            //Do what you want
        }
    }
1 голос
/ 29 мая 2012

Читая документацию Reflections, в запросе заказа на аннотации методов вы должны создать экземпляр Reflections следующим образом:

new Reflections("my.package", new MethodAnnotationsScanner())

Другой вариант - использовать API запросов Reflections, например,

Set<Method> set = getAllMethods(reflections.getTypesAnnotatedWith(...), withAnnotation(methodAnnotation))

import static org.Reflections.*;

1 голос
/ 15 февраля 2012

Это довольно просто, если у вас есть Class объект.См. эту ссылку .

Важная часть кода:

Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();

Таким образом, вы получите массив Method объектов для работы.

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