JAVA - 如何从注释中获取注释?

Kim*_*Kim 4 java reflection annotations

我想从注释中获取注释,但奇怪的是我无法从注释实例中获取单个注释。我该如何解决这个问题?我想从这个注释实例中获取注释。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

打印结果为:

ValidBoolean annotation len:3
com.sun.proxy.$Proxy28:0
[BOOLEAN]com.sun.proxy.$Proxy28:0
Run Code Online (Sandbox Code Playgroud)

Hol*_*ger 5

如果我理解正确,你想做:

Annotation[] annotationAnnotations = annotation.annotationType().getAnnotations();
Run Code Online (Sandbox Code Playgroud)

通常,annotationType()这样的工作

someClass.getAnnotation(someAnnotationClass).annotationType() == someAnnotationClass
Run Code Online (Sandbox Code Playgroud)

所以annotation instanceof ValidBoolean也意味着annotation.annotationType() == ValidBoolean.class,因此调用.getAnnotations()它们将导致相同的注释。


Raf*_*les 0

看起来注释是一个代理对象

 validBoolean.getClass().getSuperclass().getAnnotations().length
Run Code Online (Sandbox Code Playgroud)