プロが教える店舗&オフィスのセキュリティ対策術

Class cls = Class.forName("extendsClass");
Object obj = cls.newInstance();
if (obj instanceof AbstractClass) {
  System.out.println("継承してた");
  ((AbstractClass)obj).method();
}

こんなことをして、objのクラスがAbstractClassを継承しているという
ことは確認することが出来たのですが、これはやはり継承しているか
どうかを確認する為にインスタンス化を行っています。

指定された名称のクラスが、特定のクラスを継承していた場合に限り、
その名称のクラスをインスタンス化する、
という流れは行えないのでしょうか?

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/09 22:50

/*


多分これでいいと思う
http://java.sun.com/javase/6/docs/api/java/lang/ …
出力結果:
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")));
}
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/09 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!