【发布时间】:2021-08-10 13:05:25
【问题描述】:
这是我的父类,有两个名为toString 的方法。带参数的那个用在子类中。
public abstract class Army {
private String commander;
private int soldiers;
private int guns;
private int horses;
private int officers;
// getters & setters
public Army(){
}
@Override
public String toString() {
return "Army{" +
"commander='" + commander + '\'' +
", soldiers=" + soldiers +
", guns=" + guns +
", horses=" + horses +
", officers=" + officers +
'}';
}
public String toString(String type) {
var result = toString();
return result.replace("Army", type);
}
}
这是我的子类,我在子类的 toString 方法中使用父类中的 toString(String type) 方法:
public class PanzerArmy extends Army {
private String tanks = "tanks";
public String getTanks() {
return tanks;
}
public void setTanks(String tanks) {
this.tanks = tanks;
}
@Override
public String toString() {
return super.toString("PanzerArmy") +
" tanks='" + tanks + '\'' +
'}';
}
}
当我尝试显示子类的对象时出现此错误:
线程“主”java.lang.StackOverflowError 中的异常
【问题讨论】:
-
你在
toString方法中进行了递归。
标签: java stack-overflow infinite-loop tostring