内部クラス(public) に在るインスタンスメソッドを使う方法
$SOME_DIR/src/Main.java
1 import myutil.ExternalClass; 2 3 public class Main { 4 public static void main(String... args) { 5 ExternalClass externalClass = new ExternalClass(); 6 ExternalClass.SubClass subClass = externalClass.new SubClass(); 7 externalClass.hello(); 8 subClass.hello(); 9 } 10 }
$SOME_DIR/src/myutil/ExternalClass.java
1 package myutil; 2 3 public class ExternalClass { 4 public ExternalClass() {} 5 public void hello() { 6 System.out.println("origin hello"); 7 } 8 9 public class SubClass { 10 public SubClass() {} 11 12 public void hello() { 13 System.out.println("sub hello"); 14 } 15 } 16 }
command
$ cd $SOME_DIR/src $ javac Main.java $ java Main origin hello sub hello
参考記事
独り言
(何のために「内部」クラスを public にするか...)
(package で適切に名前空間を分割する or 内部クラスを private にカプセルした方がいいんじゃない?)
(デインパターン勉強し直さないと)