or1ko's diary

日々を書きます

内部クラスのインスタンス生成

今までインスタンスに対して、newを呼び出せるとは知らなかった。
なにか、効果的に使う方法はあるのかな?

class Test {
  static int count = 0;
  public static void main(String[] args) {
    new Object(){
      class InnerClass{
        public InnerClass() {count++;}
        class InnerInnerClass{
            public InnerInnerClass() {count++;}
            public void printCount() {
              System.out.println("Hallo " + count);
            }
        }
        public InnerInnerClass getInnerInnerClass() {
          return getInnerClass().new InnerInnerClass();
        }
      }
      public InnerClass getInnerClass() {
        return this.new InnerClass();
      }
    }.new InnerClass().getInnerInnerClass().printCount();
  }
}
$ javac Test.java
$ java Test
Hallo 3