黑马程序员技术交流社区

标题: 这句代码什么意思?为什要加上? [打印本页]

作者: 张绍成    时间: 2011-12-28 20:26
标题: 这句代码什么意思?为什要加上?
本帖最后由 张绍成 于 2011-12-29 19:26 编辑

我想知道:
  1. field.setAccessible(true);
复制代码
有什么作用?
  1. Class clazz2 = Class.forName("cn.itcast.interview.test2.Person");
  2.                 Object p = clazz.newInstance();
  3.                 Field field = clazz2.getDeclaredField("age");
  4.                 field.setAccessible(true);
  5.                 field.set(p, 18);
  6.                 System.out.println(field.getInt(p));
复制代码

作者: yunqiangshan    时间: 2011-12-28 20:38
age要是私有的话,用一般反射方式拿不到,必须这样field.setAccessible(true)设置才能拿到私有的age属性,暴力反射,呵呵。
作者: 吴上储    时间: 2011-12-28 21:35
field.setAccessible(true);  //我的理解是 允许访问获取到的变量
作者: 颜宗茂    时间: 2011-12-28 21:47
Person中age是私有反射方式拿不到该成员变量,必须这样field.setAccessible(true)设置后就可以访问私有的age属性,也叫暴力反射,老师有讲到的 ,呵呵。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2