在Windows 10下使用Netbeans 9,我在JAVA中创建了一个类MyClass扩展Anotherclass实现List,Serialize并被接受以覆盖List中的方法,例如以下添加方法:
@Override
public boolean add(Object e) {
boolean result = false;
if (e instanceof Wohnung){
add( (Wohnung) e);result=true;
}
return result;
}
我从另一个类调用它,当我尝试使用它时,出现堆栈溢出错误。对其进行调试表明,该方法是递归调用的。 该代码似乎还好吗? 有人可以帮我吗?
谢谢
答案 0 :(得分:0)
有一个无限循环。您定义方法add
,然后从自身调用它。您无休止的循环会产生堆栈溢出错误。
答案 1 :(得分:0)
您在寻找这样的东西吗?
public class TokenSequence extends ArrayList<Object> {
@Override
public boolean add(Object e) {
return super.add(e);
}
}
找到答案here
作为编辑:
正如其他人已经描述的那样,由于如果您发送类型为Wohnung
的对象,一次又一次地调用相同的方法,则会出现此错误。想象一下;如果类型为dog
的对象调用add()
,但是一旦在add方法内部,您就编写了再次调用同一a add()
的代码,因此出错。
答案 2 :(得分:0)
问题就如@Al Kepp所说。这是您可以用作解决方案的内容:
@Override
public boolean add(Object e) {
boolean result = false;
if (e instanceof Wohnung){
super.add( (Wohnung) e);result=true;
}
return result;
}
答案 3 :(得分:0)
由于发现递归调用add()而收到此错误。如果e不是wohnung类型,该函数就可以正常工作,因为您只是返回结果,但是当e是wohnung类型时,您将递归调用add(),并且因为没有基本情况,您会由于太多的add()调用而导致堆栈溢出错误)。 您需要调用add的超级方法来解决此错误。