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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙宁洋 中级黑马   /  2013-6-4 19:19  /  1224 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射Field类中既然有了 getDeclareField为什么还要有getField ,getField效率高吗

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

2 个回复

倒序浏览
Field类代表Java类中的成员变量
     获取非私有成员变量的方法: Field getField();只能返回类中非私有的成员变量。类中私有的成员变量对这个方法是不可见的。
     获取私有成员变量的方法:Field getDeclareField();
     要想取得私有成员在某个对象中的取值,还要把这个私有成员设置成可得到的:方法是setAccessible(true);

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
其中getField用于返回一个指定名称的属性,但是这个属性必须是公有的,这个属性可以在父类中定义。如果是私有属性或者是保护属性,那么都会抛出异常提示找不到这个属性。getFields则是返回类型中的所有公有属性,所有的私有属性和保护属性都找不到。getDeclaredField获得在这个类型的声明中定义的指定名称的属性,这个属性必须是在这个类型的声明中定义,但可以使私有和保护的。getDeclaredFields获得在这个类型的声明中定义的所有属性,包括私有和保护的属性都会被返回,但是所有父类的属性都不会被返回。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马