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

最佳答案

否则,可以使用克隆创建一个以上的单例类对象。

10-04 12:35