java根据注解动态赋值
时间: 2023-04-12 20:00:56 浏览: 107
可以使用反射机制来实现根据注解动态赋值。具体实现可以参考以下代码:
```
public class AnnotationUtil {
public static void setFieldValueByAnnotation(Object obj) throws IllegalAccessException {
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);
field.setAccessible(true);
field.set(obj, annotation.value());
}
}
}
}
public class MyClass {
@MyAnnotation("Hello World")
private String message;
public String getMessage() {
return message;
}
}
public class Main {
public static void main(String[] args) throws IllegalAccessException {
MyClass myClass = new MyClass();
AnnotationUtil.setFieldValueByAnnotation(myClass);
System.out.println(myClass.getMessage()); // 输出:Hello World
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface MyAnnotation {
String value();
}
```
在上面的代码中,我们定义了一个注解 `@MyAnnotation`,并在 `MyClass` 类的 `message` 字段上使用了该注解。然后我们使用反射机制遍历 `MyClass` 类的所有字段,如果该字段上有 `@MyAnnotation` 注解,则将注解的值赋值给该字段。最后我们在 `Main` 类中创建了一个 `MyClass` 对象,并调用 `AnnotationUtil.setFieldValueByAnnotation` 方法来动态赋值。最终输出的结果为 `Hello World`。
阅读全文