Как создать Java-метод в базовом классе, который вызывает другие методы? - PullRequest
2 голосов
/ 04 октября 2019

Я пытаюсь создать базовый класс с методом, который должен вызывать закрытый метод до и после выполнения реальной логики.

public abstract class Base {

  public Base() {}

  private void before() {
    // doSomething
  }

  private void after() {
    // doSomething
  }

  public void actual(Object object) {
    before();
    // doSomething
    after();
  }

}

public class SomeClass extends Base {

  public SomeClass() {}

  public void actual(Object object) {
    // actual code that needs to be executed between before and after methods.
  }

}

Как бы я поступил об этом?

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Вы можете сделать метод абстрактным, например,

protected abstract void actual(Object object);

и создать другой открытый метод, который будет называться

public void init(Object object){
  before();
  actual(object);
  after();
}
2 голосов
/ 04 октября 2019

Создайте другой метод, который может быть переопределен и реализован вместо прямого переопределения actual.

Например:

public void actual(Object object) {
    before();
    doActual(object);
    after();
}

protected abstract void doActual(Object object);

Вы можете создать метод actual() final, если хотитечтобы никто не переопределил его по ошибке.

...