您好,有人可以向我解释一下为什么此代码段给了我StackOverflowError 如果您能解释instanceObj初始化并调用ObjectTest构造函数和java.lang.Object构造函数时发生的情况,我将不胜感激.在我看来,ObjectTest构造函数会不断循环.但是我不知道确切的原因吗?所以有什么建议...
Hi can anybody please explain me why is this code snippet giving me StackOverflowError I really appreciate if you can explain what is happening when instanceObj initializing and calling ObjectTest constructor and java.lang.Object constructor. It seems to me ObjectTest constructor loop over and over.But I don't know exact reason? So any suggestion...
public class ObjectTest { public ObjectTest() { } ObjectTest instanceObj = new ObjectTest(); public static void main(String[] args) { ObjectTest localObj = new ObjectTest(); } }推荐答案
让我们看看将执行什么:
Let's see what will be executed :
我认为您想要更多类似这样的东西:
I think you wanted something more like this :
public class ObjectTest { private static ObjectTest instanceObj; private ObjectTest() { } public static ObjectTest getInstance() { if (instanceObj != null) { instanceObj = new ObjectTest(); } return instanceObj; } public static void main(String[] args) { ObjectTest localObj = ObjectTest.getInstance(); } }或者这个:
public class ObjectTest { private static final ObjectTest instanceObj = new ObjectTest(); private ObjectTest() { } public static ObjectTest getInstance() { return instanceObj; } public static void main(String[] args) { ObjectTest localObj = ObjectTest.getInstance(); } }这是Singleton模式.
This is the Singleton pattern.
关于同一主题:
- 为什么会出现StackOverflowError
- java类中的循环依赖
- Why I'm getting StackOverflowError
- Circular dependency in java classes
更多推荐
创建本地和实例对象时出现java StackOverflowError
发布评论