不要想的那么麻烦,其实就是对类的解剖,可以取出所有的属性和方法
思路清晰就行,比如我们改变一个名为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); 两个参数,第一个参数是对象,要把值设置在哪个对象上,第二个是需要设置的值
多做几遍反射方面的题就有思路了 |