Why am I getting a StackOverflowError exception in my constructor

余生颓废 提交于 2019-11-28 00:11:23

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();

You instantiate the class Cloning every time Cloning is constructed, which causes a recursion on instantiations.

Bathsheba

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!