黑马程序员技术交流社区
标题:
一段代码求解释
[打印本页]
作者:
闫玉泉
时间:
2012-2-28 20:31
标题:
一段代码求解释
本帖最后由 闫玉泉 于 2012-2-29 08:16 编辑
public void setProperty(Object obj, String propertyName, Object value){
try {
Field f = obj.getClass().getDeclaredField(propertyName);
f.setAccessible(true); 这句代码有什么作用?求解释,我看了API还是没有搞明白。
f.set(obj,value);
} catch (Exception e) {
System.out.println("修改失败");
}
}
作者:
石德志
时间:
2012-2-28 20:49
public void setProperty(Object obj, String propertyName, Object value){
try {
Field f = obj.getClass().getDeclaredField(propertyName);
// f.setAccessible(true); 这句代码有什么作用?求解释,我看了API还是没有搞明白。
f.set(obj,value);
} catch (Exception e) {
System.out.println("修改失败");
}
}
你把 f.setAccessible(true);这行代码注释起来运行下试试,如果报错的话(不一定报错),报错错误的意思是f这个成员对象,不可见是私有的,如果是可以访问的就不会报错,这种用法称为"暴力反射",就是用反射的方法访问对象中部可见的成员变量. f.setAccessible(true);这行代码的意思是设置f这个成员对象表示的成员变量为可访问的.
作者:
H07000223
时间:
2012-2-28 22:24
setAccessible()基本上就两种使用形式:
1.(私有)属性.setAccessible(true):作用就是让你能够调用这个类中的私有属性
2.(私有)方法.setAccessible(true):作用就是让你能够调用这个类中的私有方法
总之就是让你绕过了权限的问题,获得对这些私有属性、方法使用的权利。
除非必要,不推荐使用。
作者:
雷楚光
时间:
2012-2-29 09:38
f.setAccessible(true);把私有属性和私有方法设置成可见。使你可以直接调用私有属性和私有方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2