我看到很多人实现了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;
}
}