黑马程序员技术交流社区

标题: 急急急,反射访问属性出错 [打印本页]

作者: zhanghua    时间: 2011-11-16 16:01
标题: 急急急,反射访问属性出错
本帖最后由 zhanghua 于 2011-11-21 13:57 编辑

正在学反射 ,敲了个例子却报错了,为什么
public class Test {
        public static void main(String[] args) throws Exception {

                Class<?> clazz = Class.forName("Person");
                clazz.getField("name");
        }
}

class Person {
        private String name;
}

Exception in thread "main" java.lang.NoSuchFieldException: name
明明有name属性的,怎么抛这个异常
作者: quanhui    时间: 2011-11-16 16:18
From API: public Field getField(String name)返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段.
So 问题出在,你那个name是私有的,改成public应该就好了。
作者: olkldksl    时间: 2011-11-16 16:29
暴力反射一下
Field fieldName = clazz.getField("name");
fieldName.setAccessible(true)
这样就能访问私有变量了
作者: 後天__牛永志    时间: 2011-11-16 16:52
楼上说的很对
作者: 高庆亮    时间: 2011-11-16 17:51
private是已经被保护起来了。




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