反射怎样指定访问类的私有属性或方法
如题:有一个类,类中有共有的属性和方法若干,私有的属性和方法若干,怎样指定访问私有的或者是共有的属性或方法呢??
各位大虾!!谢谢了
[解决办法]
请参考JAVA核心技术卷I第179页
[解决办法]
首先要通过class的getDeclaredXXXXX方法得到Method或者Field~
然后Method或者Field 的.setAccessible()要设置为true
才能够调用或者设置读取值
[解决办法]
对于私有的属性可以采用提供get和set方法去访问啊,共有的话直接new一个该类的对象出来去调用
[解决办法]
贴一段代码给lz
import java.lang.reflect.*;class AA{ private int i= 10;}class BB extends AA{ private int i= 8;}class CC extends BB{ private int i = 6;}public class Test { public Test() { } public static void main(String[] args) throws Exception{ CC o = new CC(); Class c = o.getClass(); Class b = c.getSuperclass(); Class a = b.getSuperclass(); Field ci = c.getDeclaredField("i"); Field bi = b.getDeclaredField("i"); Field ai = a.getDeclaredField("i"); ci.setAccessible(true); bi.setAccessible(true); ai.setAccessible(true); System.out.println(ci.getInt(o)); System.out.println(bi.getInt(o)); System.out.println(ai.getInt(o)); }}
[解决办法]
对于私有的属性可以采用提供get和set方法去访问