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

super也无能为力?我感觉我跑偏了~
Java code

public class nbl extends B {
    int i = 3;

    public void f() {
        System.out.println(i);
        System.out.println(super.i);
        //怎麼能夠訪問到A中的i?
    }

    public static void main(String[] args) {
        new nbl().f();
    }

}

class A {
    int i = 1;
}

class B extends A {
    int i = 2;
}



也许只能通过在B中写一个方法来完成了吧。。

------解决方案--------------------
this.getClass().getSuperclass().getSuperclass().getDeclaredField("i").getInt(this)
……不知道还有没更好的方法……
------解决方案--------------------
可以简短点点:A.class.getDeclaredField("i").getInt(this);

不过如果有这种应用场景,说明程序设计出问题了。
------解决方案--------------------
System.out.println(i);
System.out.println(super.i);
System.out.println(((A)this).i);