实例化另一个类中的对象时发生StackOverflow错误



Testing.java:

public static void main(String[] args) {
TestList t = new TestList();
}

TestList.java

public class TestList extends ArrayList<Test> {
protected TestList tList;
public TestList() {
tList = new TestList();
}
}

我还有一个工作良好的Test.java类。问题是在主方法中,当TestListt对象被实例化时,我得到一个StackOverflow错误:线程中的异常";主";java.lang.StackOverflow错误

我不知道如何解决这个问题,因为对象必须是一个TestList。

java.lang.StackOverflowError表示堆栈已被突发。您有一个递归调用,没有停止条件。我认为在你的方法public TestList()中,你想要这样的tList = new ArrayList<Test>

因此,您似乎正在其构造函数中创建自己的元素。这将导致它无限地创建自己的实例。

当您调用新的TestList((时,它会调用新的TestList((,然后它会不断地调用新的测试列表((,直到您收到堆栈溢出错误。

如果你需要一个对象有一个自己的实例,我会考虑使用singleton。尽管如此,基于这个列表,我不确定什么最适合解决你的问题。你能更清楚地说明你到底想做什么吗?

最新更新