java - 如何在不获取 StackOverflowException 的情况下重复可覆盖的方法?
问题描述
我正在用 Java 创建一个库,需要有一个无限重复的方法。它必须是可覆盖的。我在下面想出了类似的东西,但我得到了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()
}
推荐阅读
- java - JOOQ 插入记录列表
- c# - 对多个数据库表使用 1 个控制器
- python - 如何使用数据帧的 NaN 删除第一行和最后一行,并将剩余的 NaN 替换为低于和高于值的平均值?
- python - Python Pika 在专用类上阻塞连接 - 回调未被调用
- php - PHP Codeigniter 绕过 html_scape 函数
- email - 从 Gsheets 发送电子邮件时自定义单元格格式/脚本?
- typescript - Angular 9:如何从选择中删除空选项
- arrays - 如何使用 swift 简洁地更新高度嵌套的对象模型?
- c++ - 没有重载运算符的转换运算符
- python-3.x - 有没有办法在一个函数中声明两个返回值?