我正在编写一个简单的代码,并且在第 2 行的以下代码中收到 StackOverflowError:Tmp4 t = new Tmp4 ();
如果我省略第 6 行(p
的初始化)或省略第 2 行,我不会收到错误。而且我没有进行递归调用。
我想问一下为什么会出现这样的错误。省略第 2 行或第 6 行时,它不会给出 StackOverflowError。
此外,它仅在我的系统上给出或代码有问题。
谢谢。
public class Tmp4 {
Tmp4 t = new Tmp4 ();
public static void main(String[] args) {
System.out.println("main");
Tmp4 p = new Tmp4 ();
System.out.println("main2");
}
}
最佳答案
通过执行 Tmp4 t = new Tmp4 ();
您正在尝试初始化其对象中同一类的对象,该对象将进行无限递归并为您提供 StackOverflow
异常。
删除此行,如下所示:
public class Tmp4 {
/* Remove this line */
Tmp4 t = new Tmp4 ();
public static void main(String[] args) {
System.out.println("main");
Tmp4 p = new Tmp4 ();
System.out.println("main2");
}
}
关于java - Java 代码中的 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438320/