嗨,有人可以向我解释一下为什么此代码段给了我StackOverflowError
如果您能解释instanceObj初始化并调用ObjectTest构造函数和java.lang.Object构造函数时发生的情况,我将不胜感激。在我看来,ObjectTest构造函数一遍又一遍地循环,但是我不知道确切的原因吗?所以有什么建议...
public class ObjectTest {
public ObjectTest() {
}
ObjectTest instanceObj = new ObjectTest();
public static void main(String[] args) {
ObjectTest localObj = new ObjectTest();
}
}
最佳答案
让我们看看将执行什么:main()
创建ObjectTest
的新实例ObjectTest
类具有一个字段instanceObj
,其中将包含一个ObjectTest
用新的instanceObj
初始化的ObjectTest
转到步骤2
我认为您想要更多类似这样的东西:
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();
}
}
这是单例模式。
在同一主题上:
Why I'm getting StackOverflowError
Circular dependency in java classes