//ElementType.TYPE 给类、接口、枚举上使用 @Target(ElementType.TYPE)//给注解进行注解,表示该注解可以用在什么地方 //@Retention(RetentionPolicy.CLASS)//表示注解传递存活时间,CLASS表示注解保留到编译进行时期,不会被加载到jvm中 @Retention(RetentionPolicy.RUNTIME)//注解可以保留到程序运行时,并被加载到jvm中,因为反射获取的时类的运行时的状态,所以可以通过反射机制读取注解的信息,这个使用较多 public @interface AnnotationClass { /** * 元注解: * ★ 元注解:JDK提供了几个特殊的注解,只能用在注解上面。 * @Target:表示该注解可以用于什么地方,取值如下: * ElementType.ANNOTATION_TYPE 可以给一个注解进行注解 * ElementType.CONSTRUCTOR 可给构造方法进行注解 * ElementType.FIELD 可给属性进行注解 * ElementType.LOCAL_VARIABLE 可给局部变量进行注解 * ElementType.METHOD 可给方法进行注解 * ElementType.PACKAGE 可给一个包进行注解 * ElementType.PARAMETER 可给一个方法内的参数进行注解 * ElementType.TYPE 可给一个类型进行注解,比如类、接口、枚举 * @Retention:表示注解传递存活时间。取值如下: * - RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器编译时它将被丢弃。 * - RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。 * - RetentionPolicy.RUNTIME 注解可保留到程序运行时并被加载到 JVM 中,因此可通过反射机制读取注解的信息。 * @Documented:将注解包含到 Javadoc 中 * @Inherited:允许子类继承父类中的注解 如父类Animal有一个注解@Test,且@Test注解上有@Inherited注解, * 那么该父类Animal的子类Cat也默认有@Test注解 */ }