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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任亚俊 中级黑马   /  2013-12-26 16:39  /  2298 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.什么是暴力反射呢?
2.是不是调用一个本来是私有属性的方法或属性呢?
3.暴力反射有什么具体应用吗?
4.希望看看暴力反射的关键代码。

评分

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

查看全部评分

4 个回复

倒序浏览
我也是才学到反射,所以了解不太多,关于暴力反射的作用我想大概就是运用在获取私有数据上比较常用吧,因为一般在其他类是无法获取一个另外一个类对象的私有变量和数据,通过暴力反射的效果就可以取出这个你想要的数据了。个人感觉在很多地方都会很有用吧,应该是sun公司的工程师们发现很多情况下必须在外界获取私有数据而添加的功能吧。比如游戏修改器应该就运用到了暴力反射的功能,(假如需要修改内存中的数据)

评分

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

查看全部评分

回复 使用道具 举报
ClassDemo cd = new ClassDemo(3,6);       
               
                //通过对象获得对应的Class对象。再获取指定的成员变量对象。注意的是:获取的不是成员变量的值。
                Field fieldx = cd.getClass().getDeclaredField("x");
               
                //如果要访问类中私有的成员变量,就要用下面这步,暴力反射。
                fieldx.setAccessible(true);
               
                //获取指定对象对应的这个成员变量的值。。注意:返回的是object。
                int x = (Integer)fieldx.get(cd);
               
                System.out.println(x);

评分

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

查看全部评分

回复 使用道具 举报
汪洋大海 发表于 2013-12-26 18:27
ClassDemo cd = new ClassDemo(3,6);       
               
                //通过对象获得对应的Class对象。再获取指定的成员变量对象。注 ...

thank you。。。。。
回复 使用道具 举报
关于暴力反射的问题,张孝祥老师在java增强中的成员变量的反射中提到过。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马