实例化另一个类中的对象时出现StackOverflowError

问题描述

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(),直到您收到堆栈溢出错误为止。

如果您需要让一个对象具有其自身的实例,我会考虑使用单例。尽管基于此列表,但我不确定这最适合解决您的问题。您能进一步说明您要做什么吗?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...