1

このコードを検討してください

class Parent {

}

class Child extends Parent {

}

public class InheritenceExample {

    public static void main(String[] args){
        Parent p1 = new Child();
        System.out.println("the class name is "+ p1.getClass().getName());

    }

}

であると宣言p1しますがtype Parent、それを に割り当てChild instanceます。私がそうするとき、私は出力としgetClass().getName()て得Childます。Parentこの場合の宣言された型を取得するにはどうすればよいですか?

編集:これはすべての場合に機能するとは限りません:getClass().getSuperclass().getName()

このコードを検討してください

class Parent {

}

class Child extends Parent {

}

class GrandChild extends Child {


}

public class InheritenceExample {

    public static void main(String[] args){
        Parent p1 = new GrandChild();
        System.out.println("the class name is "+ p1.getClass().getSuperclass().getName());

    }

}

これは出力しますChildが、そうでなければなりませんParent

4

4 に答える 4

0

おそらく使用してみてくださいgetClass().getSuperclass()

于 2013-11-05T21:22:01.913 に答える
0

スーパークラスをループする以外に見つける方法はないと思います。

Class<?> c = p1.getClass();

while (c.getSuperclass() != Object.class) {
  c = c.getSuperclass();
}

System.out.println("the class name is "+ c.getClass());
于 2013-11-05T21:22:09.397 に答える