gpt4 book ai didi

java - 初始化列表的构造函数时出现 StackOverFlowError

转载 作者:行者123 更新时间:2023-12-01 07:28:40 25 4
gpt4 key购买 nike

当我尝试为 MyArrayList(java 中 arraylist 类的个人版本)编写构造函数时,我很困惑为什么总是收到 java.lang.StackOverFlow 错误。我知道当存在递归调用时会发生 StackOverFlow 错误,但我编写的代码似乎并非如此?有人可以帮助解释为什么我会收到此错误吗?

这是我的代码,我已经包含了我编写的所有构造函数,但第一个 MyArrayList() 是编译器中错误指示的那个。

public class MyArrayList<T> {

private int capacity;
private int size;
private T[] data;
**private MyArrayList<T> test;**

private T[] createArrayOfSize(int size)
{
T[] newArray = (T[]) new Object[size];
return newArray;

}


**public MyArrayList() {

this.test = new MyArrayList();

}**

public MyArrayList (int initialCapacity) {

test.data = createArrayOfSize(initialCapacity);

}

public MyArrayList(List<T> items) {


for (int i = 0; i < items.size(); i++) {

test.data[i] = items.get(i);

}

}

对于稍微糟糕的格式表示歉意。

最佳答案

public MyArrayList() {

this.test = new MyArrayList();

}

这个坏男孩给你带来了问题。每当您使用“new”运算符时,都会调用该对象的构造函数。现在,在构造函数中您再次使用“new”。这个 new 将再次调用您的 MyArrayList 构造函数(它再次使用 new)。这会递归地进行,直到堆栈上没有剩余空间为止。所以你会得到 StackOverflowError

关于java - 初始化列表的构造函数时出现 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com