I investigate java inner classes.
I wrote example:
public class Outer {
public Outer(int a){}
public class Inner {
public Inner(Stri
Inner is an inner class. It can only be created when there is an enclosing instance of the class containing the Inner class definition.
However, you've created a static nested class, Nested, which extends from this class. When you try to invoke the super constructor
public Nested(String str, Boolean b , Number nm) { super("2",true); }
it will fail because the super constructor, for Inner, depends on an instance of Outer, which doesn't exist in the static context of the Nested class. Jon Skeet provides a solution.
An explanation of the solution appears in the JLS here.
Superclass constructor invocations may be subdivided:
Unqualified superclass constructor invocations begin with the keyword super (possibly prefaced with explicit type arguments).
Qualified superclass constructor invocations begin with a Primary expression.
- They allow a subclass constructor to explicitly specify the newly created object's immediately enclosing instance with respect to the direct superclass (§8.1.3). This may be necessary when the superclass is an inner class.