黑马程序员技术交流社区
标题:
【记录】代码练习-反射设置对象的指定成员变量的值
[打印本页]
作者:
Kevin.Kang
时间:
2015-8-12 15:44
标题:
【记录】代码练习-反射设置对象的指定成员变量的值
方法类:
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 + "]";
}
}
复制代码
作者:
耀阳圣尊
时间:
2015-8-12 15:53
赞一个,楼主写的很用心
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2