Creating Inner Classes Instances
Non-static inner classes have a hidden reference to the enclosing class instance. This means you must have an instance of the enclosing class to create the inner class. You also have to use a special "new" function that correctly initializes the hidden reference to the enclosing class. The special "new" function is a member of the enclosing class.
public class InnerClassTest {
public class ReallyInner {
}
}
InnerClassTest o = new InnerClassTest(); InnerClassTest.ReallyInner i = o.new ReallyInner();or
InnerClassTest.ReallyInner i = new InnerClassTest().new ReallyInner();
Example:
public class InnerClassTest {
public void foo() {
System.out.println("Outer class");
}
public class ReallyInner {
public void foo() {
System.out.println("Inner class");
}
public void test() {
this.foo();
InnerClassTest.this.foo();
}
}
public static void main(String[] args) {
InnerClassTest.ReallyInner i = new InnerClassTest().new ReallyInner();
i.test();
}
}
Output:
Inner class Outer class