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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiexie758 中级黑马   /  2015-10-31 23:24  /  397 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射得理解透才能吃的消啊...

1 个回复

倒序浏览
不要想的那么麻烦,其实就是对类的解剖,可以取出所有的属性和方法
思路清晰就行,比如我们改变一个名为num整型变量的值
Class Demo{
private int num;
}
第一步:肯定是获取字节码对象 Class cla = Class.forName("Demo");我这里就不写包名了,要写完整的包名.Demo
第二步:获取Demo对象 Demo demo = (Demo)cla.newInstance();
第三步:获取变量  Field field = cla.getDeclaredField("num");因为是权限是私有的,所以要用这个方法获取,如果不是私有的可以用cla.getField方法就行了
第四步:设置成可访问的 field.f.setAccessible(true);
第五步:设置值就行了 field.set(demo,100);  两个参数,第一个参数是对象,要把值设置在哪个对象上,第二个是需要设置的值

多做几遍反射方面的题就有思路了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马