gpt4 book ai didi

java - 为什么Method的getAnnotation方法需要类作为参数?

转载 作者:行者123 更新时间:2023-11-30 03:00:10 24 4
gpt4 key购买 nike

我正在阅读有关注释的内容,但不明白为什么 MethodgetAnnotation 需要类作为参数。考虑以下代码:

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?

最佳答案

这是因为一个方法可以有多个可能多种类型的注释。

getAnnotation(annotationClass)将需要检索的注释的类作为参数:

Returns this element's annotation for the specified type if such an annotation is present, else null.

如果你没有给出想要的类,你就无法知道要返回哪个注释。考虑一下

@MyAnnotation1(value = "a") @MyAnnotation2(value = "b")
public void foo() { }

如果您想要注释MyAnnotation1,您需要以某种方式告诉您要为方法foo检索哪个注释:有 2 个。这是通过给出注释的类来完成的。

另一方面,如果您想检索方法上的所有注释,您可以调用 getDeclaredAnnotations() (让注释直接出现在方法上)或 getAnnotations() (具有直接和继承的注释)。

关于java - 为什么Method的getAnnotation方法需要类作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36216916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com