在Annotation中,RetentionPolicy包含的枚举值有哪些?
时间: 2024-05-22 22:14:33 浏览: 51
RetentionPolicy包含的枚举值有三个:SOURCE、CLASS、RUNTIME。其中,SOURCE表示注解只保留在源代码中,编译成字节码文件后就被丢弃;CLASS表示注解保留在源代码和字节码文件中,但在运行时不会被加载;而RUNTIME表示注解在运行时也保留,并且可以通过反射机制获取注解信息。
相关问题
Java 注解中使用枚举属性,动态从代码获取枚举值传入注解中
可以使用以下方式将枚举值传入注解中:
1. 定义一个枚举类,例如:
```
public enum Color {
RED, GREEN, BLUE;
}
```
2. 在注解中定义一个枚举类型的属性,例如:
```
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
Color color() default Color.RED;
}
```
3. 在使用注解的类中,动态获取枚举值并传入注解中,例如:
```
public class MyClass {
public static void main(String[] args) {
Color color = Color.BLUE;
MyAnnotation annotation = MyClass.class.getAnnotation(MyAnnotation.class);
if (annotation != null) {
System.out.println("Color from annotation: " + annotation.color());
}
else {
// Use default value
System.out.println("Default color: " + color);
}
}
@MyAnnotation(color = Color.GREEN)
public static class MyAnnotatedClass {
// ...
}
}
```
在上面的例子中,我们获取了 MyAnnotatedClass 类上的 MyAnnotation 注解,并从注解中获取了枚举类型的属性值。如果注解中没有设置该属性,就使用默认值(这里默认是 Color.RED)。
阅读全文