日期:2014-05-20  浏览次数:20766 次

反射怎样指定访问类的私有属性或方法
如题:有一个类,类中有共有的属性和方法若干,私有的属性和方法若干,怎样指定访问私有的或者是共有的属性或方法呢??
  各位大虾!!谢谢了

------解决方案--------------------
请参考JAVA核心技术卷I第179页
------解决方案--------------------
首先要通过class的getDeclaredXXXXX方法得到Method或者Field~
然后Method或者Field 的.setAccessible()要设置为true
才能够调用或者设置读取值
------解决方案--------------------
对于私有的属性可以采用提供get和set方法去访问啊,共有的话直接new一个该类的对象出来去调用
------解决方案--------------------
贴一段代码给lz
Java code
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方法去访问