java - 确保在子类构造结束时调用该方法

标签 java methods transparent invocation

我有抽象类:

public abstract class MyComposite extends Composite {

     protected abstract void initHandlers();
}

以及一系列扩展它的类。如何确保在子类构造结束时调用 initHandlers() 方法?子类示例:

public CollWidget extends MyComposite {
    public CollWidget() {
        /** Some stuff thats need to be done in this particular case */
        initHandlers(); // This method should be invoked transparently
    }

    @Override
    public void initHandlers() {
        /** Handlers initialisation, using some components initialized in constructor */
    }
}

最佳答案

没有办法自动执行此操作,因为父构造函数总是在子构造函数之前调用(显式或隐式)。

一个解决方案解决方法可能是:

public abstract class MyComposite {

    public MyComposite() {
        construct();
        initHandlers();
    }

    protected abstract void construct();

    protected abstract void initHandlers();

}

public class CollWidget extends MyComposite {

    @Override
    protected void construct() {
        // called firstly
    }

    @Override
    public void initHandlers() {
        // called secondly
    }

}

关于java - 确保在子类构造结束时调用该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012197/

相关文章:

java - 如何使用 while 循环找到最大整数 (n),使得 n^3 < 12,000

java - 如何使用 jdbc 打破表中的列

java - **[更新]** 如何在android中对cardview的背景展开进行动画处理?

Matlab 类方法 : Too many arguments

javascript - jQuery 获取 "event invoking"元素

css - 在IE6中,如何使用过滤器定位透明PNG?

javascript - jquery在上传croppie插件之前裁剪图像

c++ - 来自类方法的 Cout 不执行任何操作

CSS - 具有透明颜色的文本以查看背景图像

javascript - 带有半透明点击图 block 的 HTML/JS/CSS 等距网格