@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
}