Я пытаюсь создать базовый класс с методом, который должен вызывать закрытый метод до и после выполнения реальной логики.
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. } }
Как бы я поступил об этом?
Вы можете сделать метод абстрактным, например,
protected abstract void actual(Object object);
и создать другой открытый метод, который будет называться
public void init(Object object){ before(); actual(object); after(); }
Создайте другой метод, который может быть переопределен и реализован вместо прямого переопределения actual.
actual
Например:
public void actual(Object object) { before(); doActual(object); after(); } protected abstract void doActual(Object object);
Вы можете создать метод actual() final, если хотитечтобы никто не переопределил его по ошибке.
actual()
final