@Retention
@Retention是java的元注解,用来注解注解的,是注解的注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
@Retention中RetentionPolicy类型的value共有三种,表示注解的三个生命周期
public enum RetentionPolicy {
/**
* 注解仅在源文件中,编译class文件后注解将被移除
*/
SOURCE,
/**
* 注解被保留在class文件中,虚拟机加载class文件时注解将被移除
* 这也是默认的生命周期
*/
CLASS,
/**
* 注解在源文件和编译后的class文件都存在,
* 并且虚拟机加载class文件时不会注解被移除
*/
RUNTIME
}