[load方法在Java末尾调用另一个方法

问题描述 投票:-3回答:2

我有一个抽象类Task,具有以下两种方法execute()finish()

abstract class Task {
  abstract void execute();

  private void finish() {
    // Do something...
  }
}

如何确保execute()的子类中的重载方法Task 隐式调用finish()作为最后一条语句?

java class methods abstract-class
2个回答
2
投票

您可以创建实现ExecutorCloseable接口的[AutoCloseable]类,例如:

[AutoCloseable]

您可以这样称呼(愚蠢的public class ExecutorCloseable extends Foo implements AutoCloseable { @Override public void execute() { // ... } @Override //this one comes from AutoCloseable public void close() //<--will be called after execute is finished { super.finish(); } } 示例:]:>

main()

希望这很有道理,我真的不知道您如何调用这些方法,也不知道如何创建类。嘿,这是一个尝试:)

为此, public static void main(String[] args) { try (ExecutorCloseable ec = new ExecutorCloseable ()) { ec.execute(); } catch(Exception e){ //... } finally { //... } } 上的finish()方法应为Fooprotected(建议使用第一个)。


9
投票

我不相信有任何'强迫'子类调用方法的方法,但是您可以尝试某种template method

© www.soinside.com 2019 - 2024. All rights reserved.