Since you have
Classa inner=new Classa()
which is equivalent
class Classa { Classa inner; Classa() { inner = new Classa(); } }
which stores an instance of an internal variable that has the same type of the containing class, thereby creating an infinite number of instances.
To initialize an instance of Classa , you need to allocate an internal variable of type Classa , here it is infinite recursion.
source share