java反射设置属性的值
时间: 2023-09-07 11:14:38 浏览: 136
通过Java反射,可以在运行时获取一个对象的属性信息,并且修改属性的值。下面是一个示例代码:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Person person = new Person("Tom", 18);
// 获取Person类的Class对象
Class<?> clazz = person.getClass();
// 获取name属性的Field对象,并设置访问权限为可修改
Field nameField = clazz.getDeclaredField("name");
nameField.setAccessible(true);
// 修改name属性的值
nameField.set(person, "Jerry");
// 获取age属性的Field对象,并设置访问权限为可修改
Field ageField = clazz.getDeclaredField("age");
ageField.setAccessible(true);
// 修改age属性的值
ageField.set(person, 20);
System.out.println(person.getName() + ", " + person.getAge());
}
}
```
输出结果为:
```
Jerry, 20
```
在上面的示例代码中,首先获取了Person类的Class对象,然后通过Class对象获取属性名为name和age的Field对象,并将它们的访问权限设置为可修改。最后使用Field对象的set方法修改属性的值。需要注意的是,如果属性是私有的,需要设置访问权限为可修改,否则会抛出IllegalAccessException异常。
阅读全文