我确信,这个问题代码必须在这个网站上提出。但我无法搜索,这是基本问题,但由于我的基本概念很差,所以我没有得到它-
public class A {
A obj = new A();
public static void main(String arg[])
{
A ob = new A();
}
}
它给出了java.lang.StackOverflowError
,为什么?
最佳答案
您的类(class)本质上相当于:
public class A {
A obj;
public A() {
obj = new A();
}
public static void main(String arg[]) {
A ob = new A();
}
}
现在你知道你是如何得到这个错误的了吗?每次创建 A
的实例时,构造函数 get 都会被调用,它会再次调用自身来创建另一个实例,这会继续填充堆栈直到溢出。
关于java.lang.StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088633/