A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhanghua 黑马帝   /  2011-11-16 16:01  /  2251 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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属性的,怎么抛这个异常

4 个回复

倒序浏览
From API: public Field getField(String name)返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段.
So 问题出在,你那个name是私有的,改成public应该就好了。
回复 使用道具 举报
暴力反射一下
Field fieldName = clazz.getField("name");
fieldName.setAccessible(true)
这样就能访问私有变量了
回复 使用道具 举报
楼上说的很对
回复 使用道具 举报
private是已经被保护起来了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马