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