问题描述
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类。问题出在main方法中,当实例化TestList t对象时,我得到一个StackOverflow错误:线程“ main”中的异常java.lang.StackOverflowError
我不确定如何解决此问题,因为该对象必须是TestList。
解决方法
java.lang.StackOverflowError表示堆栈已破裂。
您有一个递归调用,没有停止条件。
我认为在您的方法public TestList()
中,您想要这样的tList = new ArrayList<Test>
;
因此,似乎您是在其构造函数中创建其自身的元素。这将导致它无限创建自己的实例。
当您调用new TestList()时,它会先调用new TestList(),然后再调用new TestList(),直到您收到堆栈溢出错误为止。
如果您需要让一个对象具有其自身的实例,我会考虑使用单例。尽管基于此列表,但我不确定这最适合解决您的问题。您能进一步说明您要做什么吗?