从 Collection Class 及其存储的 objects 获取 StackOverflowError。有没有人有过类似的困境?

Getting a StackOverflowError from a Collection Class and its stored objects. Has anyone had a similar dilemma?

我正在完成命令设计模式作业,并且 运行 遇到了 WhosebugError。我查了报错的 说是我的构造函数有关

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

编译程序:

线程异常 "main" java.lang.WhosebugError

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)...

CollectionClass代码:

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);
    }

}

项目Class代码:

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。否则基础 class AyyTacoMenu 必须在构造派生 class AyyTacoItem 时构造,并且 AyyTacoMenu 的构造函数试图构造另一个 AyyTacoItem,这导致无限递归。