我正在用Java创建一个库,需要一个无限重复的方法。它必须是可以覆盖的。我想出了下面这样的东西,但我得到StackOverflowException
,这是可以预测的。
public void loop() {
loop();
}
@Override
public void loop() {
super.loop();
//some stuff
}
答案 0 :(得分:1)
不加选择地调用自身的方法必然会引发堆栈溢出错误。避免这种不必要的递归,也许使用无限循环:
@Override
public void loop() {
while(true) {
super.loop();
}
}
虽然父母应该做任何它应该做的事情:
public void loop() {
//do what is meant to do, not loop()
}
答案 1 :(得分:1)
将工作资料从loop
方法移到单独的方法中。
public void loop() {
while (!condition) {
doWork();
}
}
protected abstract void doWork();
@Override
protected void doWork() {
....
}