反射获取到的字段,如何设置新的值
时间: 2024-02-20 18:56:56 浏览: 117
一个Java反射工具类,可以完成查询字段值以及设置字段值的功能
使用反射可以获取到类的字段,然后可以通过反射设置字段的新值。以下是一个示例代码:
```java
public static void main(String[] args) throws Exception {
// 获取类的字段
Class<?> clazz = MyClass.class;
Field field = clazz.getDeclaredField("myField");
// 将字段的访问权限设置为可访问
field.setAccessible(true);
// 获取对象实例
MyClass obj = new MyClass();
// 设置字段的新值
field.set(obj, "new value");
// 打印字段的新值
System.out.println(field.get(obj));
}
static class MyClass {
private String myField = "default value";
}
```
在上面的示例代码中,我们获取了 MyClass 类的 myField 字段,并将其访问权限设置为可访问。然后创建 MyClass 对象实例,使用反射将 myField 字段的新值设置为 "new value",最后打印出 myField 字段的新值。
需要注意的是,如果字段是私有的,需要使用 `setAccessible(true)` 方法将其访问权限设置为可访问,否则会抛出 IllegalAccessException 异常。此外,如果字段是静态的,需要传入 null 作为第一个参数,来表示该字段是属于类的,而不是属于对象实例的。
阅读全文