Why am I getting a StackOverflowError exception in my constructor
Solution 1:
Your main method creates a Cloning
instance (Cloning c=new Cloning();
), which causes the initialization of the instance variable c
(Cloning c=new Cloning();
), which creates another Cloning
instance, and so on...
You have an infinite chain of constructor calls, which leads to StackOverflowError
.
In the above code I have a simple class and a class level instance
You don't have a class level instance. You have an instance level instance. If you want a class level instance, change
Cloning c=new Cloning();
to
static Cloning c=new Cloning();
Solution 2:
You instantiate the class Cloning
every time Cloning
is constructed, which causes a recursion on instantiations.
Solution 3:
Didn't you mean to write static Cloning c = new Cloning();
outside main
, or c = new Cloning();
within main
instead?
Otherwise, you'll get a new instance of c
each time this is run, which will cause a StackOverflowError
.
Currently the creation of the local c
in Cloning c = new Cloning();
(which shadows the field c
) kicks the whole thing off.