public class Test {
Test t = new Test();
public static void main(String[] args) {
Test t1 = new Test();
}
}
答案 0 :(得分:4)
您的代码没有构造函数,这就是编译器所做的 -
public class Test {
Test t; // <-- initializer copied to every constructor body, even the default.
public Test() { // <-- compiler adds default constructor,
super();
t = new Test(); //<-- infinite recursion.
}
public static void main(String[] args) {
Test t1 = new Test(); // <-- invokes default constructor
}
}
答案 1 :(得分:2)
这是因为每当创建Test
的新对象时,它将再次创建一个对象t
,同时将再次初始化......并继续
public class Test {
Test t = new Test(); //-> recursive instantiation
public static void main(String[] args) {
Test t1 = new Test();
}
}
尝试删除Test t = new Test();
或将其设为静态static Test t = new Test();
,它应该可以解决您的问题。
public class Test {
static Test t = new Test(); //or remove it
public static void main(String[] args) {
Test t1 = new Test();
}
}
答案 2 :(得分:1)
因为这一行:
Test t = new Test();
将生成无限的递归实例化。