只是没有误会:您确实要询问java.lang.annotation.Inherited。这是注解的注解,这意味着被注解的类的子类被认为具有与其父类相同的注解。
例
考虑以下2个注释:
@Inherited@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface InheritedAnnotationType {}和
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface UninheritedAnnotationType {}如果像这样注释了三个类:
@UninheritedAnnotationTypeclass A {}@InheritedAnnotationTypeclass B extends A {}class C extends B {}运行此代码
System.out.println(new A().getClass().getAnnotation(InheritedAnnotationType.class));System.out.println(new B().getClass().getAnnotation(InheritedAnnotationType.class));System.out.println(new C().getClass().getAnnotation(InheritedAnnotationType.class));System.out.println("_________________________________");System.out.println(new A().getClass().getAnnotation(UninheritedAnnotationType.class));System.out.println(new B().getClass().getAnnotation(UninheritedAnnotationType.class));System.out.println(new C().getClass().getAnnotation(UninheritedAnnotationType.class));将打印与此类似的结果(取决于注释的包):
null@InheritedAnnotationType()@InheritedAnnotationType()_________________________________@UninheritedAnnotationType()nullnull
正如你所看到的
UninheritedAnnotationType是不能继承,但
C继承注释
InheritedAnnotationType从
B。
我不知道与此有什么关系。



