当类扩展另一个类时,如何使用枚举强制执行单例模式

时间:2015-12-07 18:16:45

标签: java enums

Joshua Bloch说使用枚举是实现单身人士的最佳方式:

app.get('/', function(req, res) {
    var screenNum = req.param('screen');
    res.send(screenNum);
});

然而,枚举不能public enum Elvis { INSTANCE; void someMethod(){ // implementation } } 所以我想我必须避免使用这种方法,或者有办法吗?

1 个答案:

答案 0 :(得分:2)

由于枚举只是一个类,你可以让它包含你想要的任何东西(包括你想要的"扩展"类的单个实例)并公开它。你可以用枚举来控制任何东西的单身性质。

public enum Elvis {

    INSTANCE;

    private Object wrappedObject = new Object();


    public Object wrappedObject(){ return wrappedObject; }


    public static void main(String args[]){
        Object sortaSingledton = INSTANCE.wrappedObject();//there still can be only one
    }
}