方法类:
- package com.kxg_04;
- import java.lang.reflect.Field;
- public class Tool {
- public static void setProperty(Object obj, String propertyName, Object value)
- throws Exception {
- // 第一参数需要修改的对象,第二个参数是需要修改对象中的成员变量名称,第三个参数就是需要把这成员变量修改成什么值
- // 获取传入对象的字节码文件对象
- Class c = obj.getClass();
- // 获取成员变量,防止成员变量是私有修饰,用getDeclaredField()方法
- Field f = c.getDeclaredField(propertyName);
- // 跳过访问检查
- f.setAccessible(true);
- // 把指定对象的该成员变量设置为指定值
- f.set(obj, value);
- }
- }
复制代码 测试类:
- package com.kxg_04;
- public class ToolDemo {
- public static void main(String[] args) throws Exception {
- Person p = new Person();
- Tool.setProperty(p, "name", "周星驰");
- System.out.println(p);
- }
- }
- class Person {
- private String name;
- int age;
- @Override
- public String toString() {
- return "Person [name=" + name + ", age=" + age + "]";
- }
- }
复制代码
|
|