我看到很多人为单例实现clone
方法,并抛出CloneNotSupportedException
。为什么?
例如,如何通过克隆或其他方式将其入侵?
顺便说一句。我已经阅读了有效的Java并了解枚举。
public final class Elvis implements Serializable {
public final static transient Elvis INSTANCE = new Elvis();
private Elvis() {
if(INSTANCE != null) {
throw new IllegalStateException("This is a singleton. Don't try to instantiate it.");
}
}
private Object readResolve() {
//serialization protection
return INSTANCE;
}
}
最佳答案
否则,可以使用克隆创建一个以上的单例类对象。