java - 从集合类及其存储的对象中获取 StackOverflowError。有没有人有过类似的困境?

标签 java arraylist stack-overflow

我正在完成命令设计模式作业,但遇到了 StackOverflowError。我查看了错误附带的 < init >,它说它与我的构造函数有关。

我和我的教授已经检查过了,我们似乎找不到问题。也许多一双眼睛就能解决问题。

编译程序:

线程“main”中的异常 java.lang.StackOverflowError

at Command.AyyTacoMenu.addItem(AyyTacoMenu.java:39)
at Command.AyyTacoMenu.<init>(AyyTacoMenu.java:13)
at Command.AyyTacoItem.<init>(AyyTacoItem.java:8)
at Command.AyyTacoMenu.addItem(AyyTacoMenu.java:39)
at Command.AyyTacoMenu.<init>(AyyTacoMenu.java:13)
at Command.AyyTacoItem.<init>(AyyTacoItem.java:8)
at Command.AyyTacoMenu.addItem(AyyTacoMenu.java:39)...

集合类代码:

package Command;

import java.util.ArrayList;
import java.util.*;

public class AyyTacoMenu {
    private ArrayList<AyyTacoItem> atmenu;

    public AyyTacoMenu() {
        atmenu = new ArrayList<AyyTacoItem>();

        // System.out.println("Menu has been set to ArrayList of type AyyTacoItem");
        addItem("235", "Breakfast Enchillada", 10.00);
        addItem("236", "Burrito Bowl", 8.00);
        System.out.println("Items added");
    }

    public int size() {
        // TODO Auto-generated method stub
        return atmenu.size();
    }

    public void addItem(String i, String n, double p) {
        AyyTacoItem x = new AyyTacoItem(i, n, p);
        atmenu.add(x);
    }

    public AyyTacoItem get(int i) {
        // TODO Auto-generated method stub
        return atmenu.get(i);
    }

}

项目类别代码:

package Command;

public class AyyTacoItem extends AyyTacoMenu {
    private String iD;
    private String name;
    private double price;

    protected AyyTacoItem(String i, String n, double p){
        System.out.println("Item being Added");
        iD = i;
        name = n;
        price = p;
        System.out.println("Item Added");
    }

    protected String getID() {
        return this.iD;
    }

    protected String getName() {
        return this.name;
    }

    protected double getPrice() {
        return this.price;
    }

    public String toString() {
        String x;
        x = ((this.iD) + " | " + (this.name) + " | $" + (this.price));
        return x;
    }

}

预先感谢您的帮助!

最佳答案

public class AyyTacoItem extends AyyTacoMenu

AyyTacoItem 不应扩展 AyyTacoMenu。否则在构造派生类AyyTacoItem时必须构造基类AyyTacoMenu,而AyyTacoMenu的构造函数试图构造另一个AyyTacoItem,这会导致无限递归。

关于java - 从集合类及其存储的对象中获取 StackOverflowError。有没有人有过类似的困境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762739/

相关文章:

java - 使用 arrayList 的排序算法

java - 如何通过 firebase API 获取 Nest 的授权?

java - 如何在java中查找二维数组的特定列中的元素数?

java - 我对如何将 "ranks"添加到我的 DeckOfCards 实验室感到困惑

java - 在对象中传递 ArrayList

asp.net - System.Web.UI.Control.LoadRecursive() - 堆栈不足,无法继续安全地执行程序。

java - com.sun.tools.apt.mirror.type.ClassTypeImpl 无法转换为 com.sun.mirror.type.AnnotationType

javaFX 2.0 将组件设置为直接父级的全宽和全高

C#:如何测试 StackOverflowException

java.lang.StackOverflowError。为什么我在这里收到 Stackoverflow 异常