黑马程序员技术交流社区

标题: 反射获取某类字节码的属性问题 [打印本页]

作者: 菠萝鱼    时间: 2014-2-17 22:11
标题: 反射获取某类字节码的属性问题
首先定义一个类
public class Person {
        private  String name ;
        protected String adree;
        public Person(){}
        public Person(String name, String adree) {
                this.name = name;
                this.adree = adree;
        }
}

定义主函数
public static void main(String[] args) throws Exception {
                Person p=new Person("张三", "黑龙江");
                Field[] f=Person.class.getFields();
                for (Field field : f) {
                        if(field.getType()==String.class){
                                String s=(String)field.get(p);
                                System.out.print(s);
                        }
                }
        }

Field[] f=Person.class.getFields(); 这句代码只有在Person类的属性设置成public时才能获取到,protected ,private修饰后为什么获取不到?



作者: 程澄    时间: 2014-2-17 22:47
getField(String name) 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段
这个方法只能返回public的


作者: 程澄    时间: 2014-2-17 22:48
getDeclaredFields() 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段
作者: 一年_Hei    时间: 2014-2-17 23:19
楼上正解
作者: 菠萝鱼    时间: 2014-2-19 10:41
谢谢 程澄
作者: .......    时间: 2014-2-19 10:54
楼上正解




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