我正在阅读注释,无法理解为什么getAnnotation
Method
需要类作为参数。请考虑以下代码:
Class<?> c = ob.getClass();//From here we get the Class object
Method m = c.getMethod("myMeth");//we get Method object (we know from what Class)
MyAnno anno = m.getAnnotation(MyAnno.class);//and here we pass Class. Why?
答案 0 :(得分:1)
如果您只想获得所有方法注释,请使用:
Annotation[] annotations = method.getDeclaredAnnotations();
如果在方法上声明了getAnnotation
方法将返回fiven类型的注释
答案 1 :(得分:1)
这是因为一个方法可能有多个可能有多种类型的注释。
getAnnotation(annotationClass)
将要检索的所需注释的类作为参数:
如果存在这样的注释,则返回指定类型的此元素的注释,否则为null。
如果您没有提供想要的课程,则无法知道要返回哪个注释。考虑
@MyAnnotation1(value = "a") @MyAnnotation2(value = "b")
public void foo() { }
如果你想要注释value
的{{1}},你需要以某种方式告诉你要为方法MyAnnotation1
检索哪个注释:有2.这是通过给出来完成的注释的类。
另一方面,如果要检索方法上的所有注释,可以调用getDeclaredAnnotations()
(使注释直接出现在方法上)或{{3} (具有直接和继承的注释)。