@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface SuperClass {
public String name() default ""; } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface SubClass { public String name() default ""; } @SuperClass public class Super { } @SubClass public class Sub extends Super{ } public class TestInherited { public static void main(String[] args) { Class<Sub> clazz = Sub.class; System.out.println(clazz.isAnnotationPresent(SuperClass.class)); System.out.println(clazz.isAnnotationPresent(SubClass.class)); System.out.println(clazz.getAnnotation(SuperClass.class)); System.out.println(clazz.getAnnotation(SubClass.class)); System.out.println(Arrays.toString(clazz.getAnnotations())); System.out.println(Arrays.toString(clazz.getDeclaredAnnotations())); ////自身 } }
近期评论