java - load方法在Java中最后调用另一个方法
问题描述
我有一个Task
具有两种方法的抽象类execute()
,finish()
如下所示:
abstract class Task {
abstract void execute();
private void finish() {
// Do something...
}
}
如何确保隐式调用execute()
子类中的重载方法作为最后一条语句?Task
finish()
解决方案
我不相信有任何“强制”子类调用方法的方法,但您可以尝试某种模板方法方法:
abstract class Foo {
protected abstract void bar(); // <--- Note protected so only visible to this and sub-classes
private void qux() {
// Do something...
}
// This is the `public` template API, you might want this to be final
public final void method() {
bar();
qux();
}
}
公共method
是入口点,调用抽象bar
然后是私有qux
方法,这意味着任何子类都遵循模板模式。然而它当然不是灵丹妙药——一个子类可以简单地忽略公众method
。
推荐阅读
- r - 如果 r 中出现错误,则转到 lapply() 的下一次迭代
- image-processing - 有没有办法将图像转换为网格栅格数据?
- git - GitOps - 在同一个仓库或单独的仓库中配置?
- windows - 在 Windows 中以管理员身份运行 cmd 以永久保存命令历史记录
- css - 如何在同一个“逻辑”列中混合流动和固定宽度的内容?
- clojure - 如何将 quil lein 模板添加到 windows
- python - 涉及 fsolve 和 quad 集成的 python 代码中的数学域错误
- pandas - 如何删除尾随行和前导行 [Pandas]
- c# - 如何通过 C# 最大化/最小化当前打开的 Firefox 窗口
- mysql - MySQL 3.2 - 检索每个组中不为空的最后一条记录