Java 如何在不获取StackOverflowException的情况下重复可重写方法?
我正在用Java创建一个库,需要一个无限重复的方法。它必须是可重写的。我在下面提出了类似的想法,但是我得到了Java 如何在不获取StackOverflowException的情况下重复可重写方法?,java,overriding,Java,Overriding,我正在用Java创建一个库,需要一个无限重复的方法。它必须是可重写的。我在下面提出了类似的想法,但是我得到了StackOverflowException,这是可以预测的 public void loop() { loop(); } @Override public void loop() { super.loop(); //some stuff } 不加区分地调用自身的方法必然会引发堆栈溢出错误。避免这种不必要的递归,并可能使用无限循环: @Override public voi
StackOverflowException
,这是可以预测的
public void loop() {
loop();
}
@Override
public void loop() {
super.loop();
//some stuff
}
不加区分地调用自身的方法必然会引发堆栈溢出错误。避免这种不必要的递归,并可能使用无限循环:
@Override
public void loop() {
while(true) {
super.loop();
}
}
而父母应该做任何该做的事:
public void loop() {
//do what is meant to do, not loop()
}
将工作内容从
循环
方法移到单独的方法中
public void loop() {
while (!condition) {
doWork();
}
}
protected abstract void doWork();
@Override
protected void doWork() {
....
}
“需要一个无限重复的方法”-为什么需要这样的东西?这是递归。当堆栈不断被填满时,您无意中惊醒了一个魔鬼(StackOverflow)