@Retention的参数
时间: 2024-01-09 14:10:18 浏览: 139
@Retention注释的参数有三种:
1. SOURCE:表示注释只保留在源代码级别,编译器会忽略这些注释,并不包含在编译后生成的class文件中。
2. CLASS:表示注释会保留在编译后生成的class文件中,但在运行时会被JVM忽略。
3. RUNTIME:表示注释会保留在编译后生成的class文件中,并且在运行时也会被JVM保留,可以通过反射机制读取。
相关问题
@retention注解作用
@Retention注解用于指定被注解的代码元素(如类、方法、变量等)的生命周期,即该注解所修饰的代码在运行时的保留策略。它有一个参数value,是一个枚举类型,包含三个值:
1. RetentionPolicy.SOURCE:被注解的代码元素仅存在于源代码中,编译后不存在;
2. RetentionPolicy.CLASS:被注解的代码元素存在于字节码文件中,但在运行时不会被保留;
3. RetentionPolicy.RUNTIME:被注解的代码元素存在于字节码文件中,并在运行时保留,可以通过反射机制获取。
通常情况下,我们使用@Retention(RetentionPolicy.RUNTIME)来标识自定义注解,使其在运行时保留,可以在程序运行时通过反射机制进行访问。
@Retention()
@Retention() 注解用来指定被它所注解的注解保留的时间长度。它有一个参数,取值为 RetentionPolicy 枚举类型中的一个值,如 SOURCE、CLASS、RUNTIME。
- @Retention(RetentionPolicy.SOURCE):表示被注解的注解只保留在源代码中,编译时会被忽略掉。
- @Retention(RetentionPolicy.CLASS):表示被注解的注解会被保留在 class 文件中,但是在运行时会被忽略掉。
- @Retention(RetentionPolicy.RUNTIME):表示被注解的注解会被保留在运行时,可以通过反射等机制读取到。
通常情况下,我们使用的注解都是保留在运行时的,因为只有这样才能在程序运行时通过反射等机制获取到注解信息。
阅读全文