- ベストアンサー
指定されたクラスの継承元の確認方法
Class cls = Class.forName("extendsClass"); Object obj = cls.newInstance(); if (obj instanceof AbstractClass) { System.out.println("継承してた"); ((AbstractClass)obj).method(); } こんなことをして、objのクラスがAbstractClassを継承しているという ことは確認することが出来たのですが、これはやはり継承しているか どうかを確認する為にインスタンス化を行っています。 指定された名称のクラスが、特定のクラスを継承していた場合に限り、 その名称のクラスをインスタンス化する、 という流れは行えないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
2行目で cls.getSuperClass() して,結果を AbstractClass と比較すればいいのではないでしょうか。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
/* 多分これでいいと思う 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"))); } }
お礼
ありがとうございます。できました!
お礼
ありがとうございます。できました!