java反射获取到类成员 并修改这个值 写个例子 并带上注释
时间: 2024-02-11 16:05:47 浏览: 60
好的,以下是一个示例代码,可以利用 Java 反射获取类成员并修改它的值:
```java
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
// 创建一个对象
Person person = new Person("John", 25);
// 获取类的 Class 对象
Class<Person> personClass = Person.class;
// 获取类成员 name 的 Field 对象
Field nameField = personClass.getDeclaredField("name");
// 设置 Field 对象的访问权限为可修改
nameField.setAccessible(true);
// 获取对象 person 的 name 成员变量的值
String name = (String) nameField.get(person);
System.out.println("Before modification: " + name);
// 修改 name 的值
nameField.set(person, "Tom");
// 获取修改后的值
name = (String) nameField.get(person);
System.out.println("After modification: " + name);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
```
解释一下代码的执行流程:
1. 首先创建了一个 Person 对象;
2. 获取 Person 类的 Class 对象;
3. 获取类成员 name 的 Field 对象;
4. 设置 Field 对象的访问权限为可修改;
5. 获取对象 person 的 name 成员变量的值,并输出;
6. 修改 name 的值为 "Tom";
7. 获取修改后的值,并输出。
值得注意的是,修改私有成员变量是一种反模式,应该尽可能避免使用。
阅读全文