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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯鹏飞 黑马帝   /  2011-7-30 09:19  /  2946 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在同一个包中一个类的默认没有修饰的字断String
name可以被另一个类使用吧,可在反射中用Field f=clazz.getField(″name″)为何就提示没有该字段呢?在同一包中默认的不是可以访问吗?这里怎么相违背呢?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 建议贴出完整代码

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-31 02:56:44
沙发
如遇问题,你首先想到的应该是JDK文档。
在JDK中明确说明,Class.getField(String name)方法只用于获取该类声明为public的name字段。
回复 使用道具 举报
黑马网友  发表于 2011-7-31 05:59:52
藤椅

回复 沙发 的帖子

哦,这个还真没注意到呢,以后会多查看文挡的。
回复 使用道具 举报
黑马网友  发表于 2011-7-31 08:11:28
板凳
Field f=clazz.getField(″name″)用于访问public修饰的字段
要反射其他类型的可以用暴力反射[code]Field f=clazz.getDeclaredField("name");
f.setAccessible(true);//暴力反射,强制取出其中的值[/code]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马