• ベストアンサー

指定されたクラスの継承元の確認方法

Class cls = Class.forName("extendsClass"); Object obj = cls.newInstance(); if (obj instanceof AbstractClass) {   System.out.println("継承してた");   ((AbstractClass)obj).method(); } こんなことをして、objのクラスがAbstractClassを継承しているという ことは確認することが出来たのですが、これはやはり継承しているか どうかを確認する為にインスタンス化を行っています。 指定された名称のクラスが、特定のクラスを継承していた場合に限り、 その名称のクラスをインスタンス化する、 という流れは行えないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.2

2行目で cls.getSuperClass() して,結果を AbstractClass と比較すればいいのではないでしょうか。

naktak
質問者

お礼

ありがとうございます。できました!

その他の回答 (1)

回答No.1

/* 多分これでいいと思う http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isAssignableFrom%28java.lang.Class%29 出力結果: true false false false */ class XXX{ } class YYY extends XXX{ } public class ZZZ{ public static void main(String[] args) throws ClassNotFoundException{ System.out.println(Class.forName("XXX").isAssignableFrom(Class.forName("YYY"))); System.out.println(Class.forName("YYY").isAssignableFrom(Class.forName("XXX"))); System.out.println(Class.forName("YYY").isAssignableFrom(Class.forName("ZZZ"))); System.out.println(Class.forName("ZZZ").isAssignableFrom(Class.forName("YYY"))); } }

naktak
質問者

お礼

ありがとうございます。できました!

関連するQ&A