首页 > 解决方案 > 如何在不获取 StackOverflowException 的情况下重复可覆盖的方法?

问题描述

我正在用 Java 创建一个库,需要有一个无限重复的方法。它必须是可覆盖的。我在下面想出了类似的东西,但我得到了StackOverflowException,这是可以预见的。

public void loop() {
  loop();
}

@Override
public void loop() {
  super.loop();
  //some stuff
}

标签: javaoverriding

解决方案


不加选择地调用自身的方法必然会引发堆栈溢出错误。避免这种不必要的递归,并可能使用无限循环:

@Override
public void loop() {
    while(true) {
        super.loop();
    }
}

虽然父母应该做任何它应该做的事情:

public void loop() {
  //do what is meant to do, not loop()
}

推荐阅读