这是我的父类,有两个名为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 + '\'' +
'}';
}
}
当我尝试显示子类的对象时,我得到以下错误:
线程“main”java.lang.StackOverflowError中出现异常
在面板army.toString()
中,您调用army.toString(String)
,后者又调用toString()
。您可能希望army.toString()
在此处执行,但由于您在PanzerArmy
中重写了它(并且当前对象的类型为PanzerArmy
),因此它将调用PanzerArmy.toString()
。..它将调用army.toString(String)
并以一个永无止境的递归重新开始整个jazz。最终,JDK决定它已经得到了足够的这些和bails。
更好的解决方案是使army
中的toString()
抽象,并且只实现toString(String)
。
或者,您可以使用getClass().getSimPlename()
这样的东西来获取当前类的短名称,并立即使用它,而不是为每个子类调整toString()
。
问题内容: public class Category { 在正在生成。 问题答案: 当您执行时,您称呼孩子们的。这里没有问题,只不过您在这里调用了父对象。这将称呼孩子,等等。 不错的无限循环。 摆脱它的最好方法是将您的方法更改为: 这样,您将不打印parentCategory,而仅显示其名称,不显示无限循环,不显示StackOverflowError。 编辑: 正如博洛在下面说的那样,您将需要检
很抱歉,我对Java知之甚少。我得到了这个代码来接管。基本上,我在 当我运行代码时。 下面是解析XML的块 这是Improts,不确定是否需要这样做 这是XML文件
我是新手,但我正在编写一个应用程序,我不断收到这个错误,导致应用程序在启动时崩溃。 导致它的代码在下面的类中,在问题的行旁边会有一个这里的注释。 这就是我调用方法的代码。 这是堆栈跟踪。 谢谢你的帮助。
请问为什么第13行的错误是未报告的异常,必须捕获pr声明要抛出
前段时间,我设置了一个带有一些子域的站点(,...) 为什么辅助DNS没有给出子域的答案?它给出了像“test.example.com”这样的旧子域的答案。我必须如何解释SOA响应?什么意思?
我还尝试了,,JMeter获得了多达8000个示例,最大时间12000ms(超时30s),并给出了错误。在拒绝之前,它至少应该排队10,000个连接。