运行此代码时,它显示 Stackoverflow 错误。我做错了什么,为什么代码可以编译?
public class Foo {
int a = 5;
Foo f = new Foo();
void go() {
System.out.println(f.a);
}
public static void main(String[] args) {
Foo f2 = new Foo();
f2.go();
}
}
最佳答案
Foo f=new Foo();
您创建一个 Foo
的实例,使用一个本身是 Foo
实例的变量,并在构造函数中初始化它。
这会导致构造函数调用的无限递归,直到您的堆栈空间不足。
关于java - 在 main 方法之外创建对象时出现 stackoverflow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9126122/