使用带有org.reflections的注释获取类方法

时间:2012-02-15 12:17:28

标签: java reflection

我在项目中使用了org.reflections(http://code.google.com/p/reflections/)来加载带有某些注释的类。现在我有课,我需要获得我自己制作的所有注释方法。但是当我创建Reflections对象时,它只询问包名,所以如果我使用getMethodsAnnotatedWith方法,它将获得给定包类的所有方法,但我想从我的类中获取方法。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

以下是您可以做的事情:

    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 :(得分:1)

如果您有一个Class对象,那就相当简单了。请参阅this reference

重要的代码部分是:

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

通过这种方式,您将获得一组Method个对象。

答案 2 :(得分:1)

阅读Reflections文档,按顺序查询方法注释,你应该实例化这样的反射:

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

另一种选择是使用Reflections查询api,例如,

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

import static org.Reflections.*;