I am using a hierarchy of inner classes to represent some data in an application and I have run into an error message that I simply do not understand. My code can be boiled down to the following minimal example:
public class A {
public class B extends A {}
public class C extends B {}
}
Javac (and my IDE of course) fails to compile the code with the following error message:
A.java:3: cannot reference this before supertype constructor has been called
public class C extends B {}
^
1 error
I didn’t write this anywhere. There is no more code than provided above, so I assume javac has generated something related to the inner class.
I have found another way to represent my data, so I am simply interested in a good explanation of why it doesn’t compile.
You need an outer class instance to create an inner class instance i.e something like
new Outer().new Inner();To extend the inner class (Parent inner class) with another inner class (child inner class), you cannot call the constructor of ‘parent inner class’ because the instance of ‘outer class’ is not there.
Try like this,
Similar question : Odd situation for “cannot reference this before supertype constructor has been called”