考虑以下 2 个给出相同错误的程序
第一次调用:
public class Testing {
Testing t=new Testing();
public static void main(String args[]){
testing t1=new testing();
}
}
二等:
class foo{
void baz(){
new testing();
}
}
public class testing {
testing t=new testing();
public static void main(String args[]){
foo f=new foo();
f.baz();
}
}
上面的代码如何给出以下错误?
我知道类的实例是递归创建的,但我想知道如何?
Exception in thread "main" java.lang.StackOverflowError
at com.Testing.<init>(Testing.java:4)
at com.Testing.<init>(Testing.java:4)
如果我们这样做,为什么不会发生这种情况
public class testing {
testing t2=new testing();
testing t1=new testing();
public static void main(String args[])
{//anything}
}
因为 t1 需要初始化 t2 对象,反之亦然?