Edited at

Java: インナークラスを外で継承し、コンストラクタ内でenclosing instanceをnew

More than 5 years have passed since last update.

こんなことができるのか… org.eclipse.jdt.core.tests.compiler.regression.InnerEmulationTest.test090 より:


D.java

public class D {

public void main(String[] args) {
class Middle {
class Inner {}
}
class M extends Middle.Inner {
M() { new Middle().super(); } // !!!
}
new M();
}
}

インナークラスを外で継承して、コンストラクタの中で(!) enclosing class のインスタンスを生成するという方法。

昨日のポストにかなり関係していそう。