Java 注释#annotationType()的用途是什么?
接口注释指定了一个方法Java 注释#annotationType()的用途是什么?,java,annotations,Java,Annotations,接口注释指定了一个方法 Class<? extends Annotation> annotationType() 但是 做同样的工作。。。除非a是实现多个注释的类的实例,但是有人见过这样的野兽吗 如果a是类a实现MyAnnotation、YourAnnotation的一个实例,那么上述两个测试并不等同,但问题是哪一个更好 (*)这就像说明getX()返回x这就像getClass(),除了在运行时实现注释的方式外,getClass()经常为注释实例返回无意义类型 annotation
Class<? extends Annotation> annotationType()
但是
做同样的工作。。。除非a
是实现多个注释的类的实例,但是有人见过这样的野兽吗
如果a
是类a实现MyAnnotation、YourAnnotation
的一个实例,那么上述两个测试并不等同,但问题是哪一个更好
(*)这就像说明getX()
返回x
这就像getClass()
,除了在运行时实现注释的方式外,getClass()
经常为注释实例返回无意义类型
annotationType()
返回“正确的东西”——注释的反射类型,而不是一些无意义的运行时类型
比较
Enum.getDeclaringClass()
,它为枚举常量返回“正确的东西”,而myEnumConstant.getClass()
可能返回枚举的合成子类型。使用annotationType()的一个原因是,如果您的注释是使用代理类实现的。getClass()将返回代理类,而您可能需要底层的“真实”实现类
有很多这样的例子,特别是当涉及依赖注入或其他重量级反射时。现在我明白了。。。与
Enum
的比较有帮助。如果我想要一个MapYup。例如,我经常将ClassToInstanceMap
传递给大家。现在有一些人要求改进文档
a.annotationType().equals(MyAnnotation.class)
a instanceof MyAnnotation