我正在完成命令设计模式作业,但遇到了 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/