S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

インナークラスのインスタンス生成の、続き

先日続き
継承の確認なので、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();
    }    
  }
}