我正在使用 Scannotation 扫描类文件并获取该类的任何元素上存在的所有带有注释的类。使用反射,我已经能够找出方法中参数的所有注释,但我需要这些注释的对象,以便我以后可以获取它的参数(或者你怎么称呼它)。
这是我代码的一小部分,它将返回我想要的注释,但我无法使用它们。
public Set<Class> getParametersAnnotatedBy(Class<? extends Annotation> annotation) {
for (String s : annotated) {
//annotated is set containing names of annotated classes
clazz = Class.forName(s);
for (Method m : clazz.getDeclaredMethods()) {
int i = 0;
Class[] params = m.getParameterTypes();
for (Annotation[] ann : m.getParameterAnnotations()) {
for (Annotation a : ann) {
if (annotation.getClass().isInstance(a.getClass())) {
parameters.add(a.getClass());
//here i add annotation to a set
}
}
}
}
}
}
我知道我可以使用它,如果我知道注释,就像这样:
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String name();
public int count();
}
// ... some code to get annotations
MyAnnotation ann = (MyAnnotation) someAnnotation;
System.out.println(ann.name());
System.out.println(ann.count());
但到目前为止,我无法使用反射来做到这一点......我非常感谢任何指示,在此先感谢。PS.:有什么方法可以获取参数对象,例如字段的字段、方法的方法等?