我想从注释中获取注释,但奇怪的是我无法从注释实例中获取单个注释。我该如何解决这个问题?我想从这个注释实例中获取注释。
public static void test(Annotation annotation) {
System.out.println("ValidBoolean annotation len:" + ValidBoolean.class.getAnnotations().length);
System.out.println(annotation.getClass().getName() + ":" + annotation.getClass().getAnnotations().length);
if (annotation instanceof ValidBoolean) {
ValidBoolean validBoolean = (ValidBoolean) annotation;
System.out.println("[BOOLEAN]" + validBoolean.getClass().getName() + ":" + validBoolean.getClass().getAnnotations().length);
}
}
打印结果是:
ValidBoolean annotation len:3
com.sun.proxy.$Proxy28:0
[BOOLEAN]com.sun.proxy.$Proxy28:0
答案 0 :(得分:3)
如果我理解正确,你想做
Annotation[] annotationAnnotations=annotation.annotationType().getAnnotations();
通常,annotationType()
的作用是someClass.getAnnotation(someAnnotationClass).annotationType()==someAnnotationClass
。
因此annotation instanceof ValidBoolean
也暗示annotation.annotationType() == ValidBoolean.class
,因此在其上调用.getAnnotations()
会产生相同的注释。
答案 1 :(得分:0)
看起来注释是代理对象
validBoolean.getClass().getSuperclass().getAnnotations().length
答案 2 :(得分:0)
我相信您可以做到
TopLevelAnnotation topLevelAnnotation = anything.get.getAnnotation(TopLevelAnnotation.class);
NestedAnnotation nestedAnnotation = topLevelAnnotation.annotationType().getAnnotation(NestedAnnotation.class);
请检查
/**
* Returns the annotation type of this annotation.
* @return the annotation type of this annotation
*/
java.lang.annotation.Annotation#annotationType()
在java.lang.annotation.Annotation
中