1

次のことを考慮してください。

public class A {
    public String name = "i am a A instance";
}
public class B extends A {
    public String name = "i am a B instance";
}

public class ReflectTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A ainstance = new A();
        A binstance = new B();
        B bbinstance = new B();
        System.out.println(bbinstance.name);
        System.out.println(ainstance.getClass().cast(binstance).name);
        System.out.println(ainstance.getClass().cast(bbinstance).name);
        System.out.println(ainstance.getClass().cast(binstance).getClass());
        System.out.println(ainstance.getClass().cast(bbinstance).getClass());
    }

}

出力は次のとおりです。

i am a B instance
i am a A instance
i am a A instance
class cs236703.s2013.hw4.tests.B
class cs236703.s2013.hw4.tests.B

最後の2つのprintlnsでクラスBの代わりにクラスAを返すようにJavaリフレクションを操作する方法はありますか?

4

1 に答える 1