インナークラスのインスタンス生成の、続き
先日続き。
継承の確認なので、privateをprotectecdに変更してみたり。
まぁ想定された挙動ではある。
使う場面は、オレオレフレームワーク内くらいしかないけど。
package pkg; // インナークラスを持ったクラスInnerClassTestを継承したクラス public class InnerClassExTest extends InnerClassTest { public InnerClassExTest() { super(); } public static void main(String[] args) throws Exception { ((InnerClassExTest) Class.forName("pkg.InnerClassExTest").newInstance()).execute(); } // 実行 protected void execute() throws Exception { createInstance("pkg.InnerClassExTest$InnerClassExEx").print(); // ClassNotFoundException(InnerClassExTestクラスにはInnerClassが含まれない) // createInstance("pkg.InnerClassExTest$InnerClass").print(); // NoSuchMethodException(コンストラクタの第1引数のインスタンスがInnerClassTestクラスでない<継承したクラスはNG>) // createInstance("pkg.InnerClassTest$InnerClass").print(); } // 継承したインナークラス(InnerClassEx)を更に継承したクラス public class InnerClassExEx extends InnerClassEx { public InnerClassExEx() { super(); } } }