Java的注解接口java.lang.annotation.Retention定义注解保留多长时间。如果在注解接口的声明上没有Retention注解,那么默认的保留策略是RetentionPolicy.CLASS。
Retention只有一个元素value,类型是RetentionPolicy。
RetentionPolicy是一个枚举类型,定义了几个保留策略:
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/annotation/RetentionPolicy.html
-
RetentionPolicy.CLASS:注解被编译器记录在class文件中,但在运行时虚拟机没有必要保留。例如:
-
RetentionPolicy.RUNTIME:注解被编译器记录在class文件中,运行时被虚拟机保留,因此它们可以通过反射的方法读取。例如:
-
RetentionPolicy.SOURCE:注解被编译器丢弃。