例3:写一个方法设置对象任意权限的属性的值
写一个方法:public void setProperty(Objectobj, String propertyName, Object value){},
此方法可将obj对象中名为propertyName的属性的值设置为value。(这里不知道obj对象的propertyName属性的权限,如果为private,则必须使用反射才能设置,所有才有了以下代码)
public void setProperty(Object obj, String propertyName, Object value) throws Exception {
// 根据对象获取字节码文件对象
Class c = obj.getClass();
// 获取该对象的propertyName成员变量
Field field = c.getDeclaredField(propertyName);
// 取消访问检查
field.setAccessible(true);
// 给对象的成员变量赋值为指定的值
field.set(obj, value);
}
本文介绍了一个通用方法,通过反射机制可以设置任意Java对象的属性值,无论其可见性如何。此方法利用了Class和Field类提供的API来实现。
726

被折叠的 条评论
为什么被折叠?



