如何通过反射获取和设置对象私有字段的值
时间: 2023-10-02 19:04:31 浏览: 129
通过反射可以获取和设置对象的私有字段的值,具体步骤如下:
1. 获取Class对象:使用Class.forName()方法获取类的Class对象。
2. 获取Field对象:使用Class.getDeclaredField()方法获取指定名称的Field对象,需要传入字段名称。
3. 设置可访问性:使用Field.setAccessible(true)方法设置Field对象可访问。
4. 获取或设置字段值:使用Field.get()方法获取字段值,使用Field.set()方法设置字段值,需要传入对象实例。
示例代码如下:
```
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Person person = new Person("Tom", 20);
// 获取Class对象
Class<?> clazz = person.getClass();
// 获取name字段
Field nameField = clazz.getDeclaredField("name");
// 设置可访问性
nameField.setAccessible(true);
// 获取name字段的值
String name = (String) nameField.get(person);
System.out.println("name: " + name);
// 设置name字段的值
nameField.set(person, "Jerry");
System.out.println("new name: " + person.getName());
}
}
```
阅读全文