java getAnnotation 设置值
时间: 2024-03-21 15:42:43 浏览: 13
在 Java 中,可以使用 `@AnnotationName(value = "someValue")` 的方式来设置注解的属性值。如果你需要在运行时设置注解的属性值,可以使用反射 API 来完成。
以下是一个示例代码,其中 `MyAnnotation` 是自定义的注解类:
```java
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface MyAnnotation {
String value();
}
@MyAnnotation(value = "initialValue")
class MyClass {
public void myMethod() {
// some code here
}
}
public class Main {
public static void main(String[] args) throws Exception {
MyClass myObj = new MyClass();
// 获取注解对象
MyAnnotation annotation = MyClass.class.getAnnotation(MyAnnotation.class);
// 获取注解对象的 value 属性值
String annotationValue = annotation.value();
System.out.println("Initial value: " + annotationValue);
// 使用反射 API 修改注解对象的 value 属性值
Class<? extends MyAnnotation> annotationType = annotation.annotationType();
Method valueMethod = annotationType.getDeclaredMethod("value");
valueMethod.setAccessible(true);
valueMethod.invoke(annotation, "newValue");
// 再次获取注解对象的 value 属性值
String updatedValue = annotation.value();
System.out.println("Updated value: " + updatedValue);
}
}
```
在上述示例代码中,我们首先定义了一个自定义注解 `MyAnnotation`,然后我们在 `MyClass` 类上使用了这个注解并为其设置了一个初始值。接着我们使用反射 API 获取了 `MyClass` 类上的注解对象,并打印出了其初始值。
然后我们使用反射 API 修改了注解对象的 `value` 属性值,并再次获取了该属性的值。