用于继承静态块的类的Java模式

时间:2017-02-02 00:19:43

标签: java oop static-block

提前感谢您的帮助!

我有一些类需要包含相同的静态块,例如:

public class Class1 {
    static {
        changeState();
    }

    ...
}

public class Class2 {
    static {
        changeState();
    }

    ...
}

我目前有一个抽象类,只包含提到的静态块,其他类都扩展抽象类,如:

public abstract class WithChangeState {
    static {
        changeState();
    }
}

public class Class1 extends WithChangeState {    
    ...
}

public class Class2 extends WithChangeState {
    ...
}

这并不像正确的模式那样“感觉”。还有其他更优雅或正确的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

为了将来参考,我最终做的是:

// utility class with a static method
public abstract class ChangeState {
    public static void initialize() {
        changeState();
    }
}

// access it using Classname
public class Class1 {    
    static {
        ChangeState.initialize();
    }
    ...
}

// access it using Classname
public class Class2 {
    static {
        ChangeState.initialize();
    }
    ...
}