1: Defina la anotación A
@Retention(RetentionPolicy.RUNTIME)
public @interface A {
}
2: Defina la anotación B y use la anotación A
@A
@Retention(RetentionPolicy.RUNTIME)
public @interface B {
}
3: Defina la clase y use la anotación B
@B
public class Cls {
}
4: Obtenga todas las anotaciones de la clase Cls
public class Main {
public static void main(String[] args) {
// 首先直接获取B注解,这是确定的
B annotationB = Cls.class.getAnnotation(B.class);
System.out.println("annotationB: ");
System.out.println(annotationB);
// 通过B的class获取注解A,这里注意使用annotationType()方法,而不是getClass()
// 因为此时返回的是代理对象class,而非本class
A annotationA = annotationB.annotationType().getAnnotation(A.class);
System.out.println("annotationA: ");
System.out.println(annotationA);
}
}
Realice la prueba:
annotationB:
@compositeannotation.B()
annotationA:
@compositeannotation.A()