我想从注释中获取注释,但奇怪的是我无法从注释实例中获取单个注释。我该如何解决这个问题?我想从此注释实例获取注释。
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
如果我理解正确的话,你想做的是:
Annotation[] annotationAnnotations = annotation.annotationType().getAnnotations();
一般来说,annotationType() https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html#annotationType--工作使得
someClass.getAnnotation(someAnnotationClass).annotationType() == someAnnotationClass
So annotation instanceof ValidBoolean
也暗示着annotation.annotationType() == ValidBoolean.class
,从而调用.getAnnotations()
在它们上将导致相同的注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)