Joshua Bloch说使用枚举是实现singleton的最佳方式:
public enum Elvis {
INSTANCE;
void someMethod(){
// implementation
}
}
然而,枚举不能extends
,所以我想我将不得不避免使用这种方法,或者有办法做到这一点吗?
由于枚举只是一个类,您可以让它包含您想要的任何内容(包括您想要的"扩展"类的单个实例),并只公开它。您可以使用枚举控制任何内容的singleton特性。
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
}
}