Java 在Singleton对象上调用clone方法时出错

Java 在Singleton对象上调用clone方法时出错,java,singleton,cloning,Java,Singleton,Cloning,为什么在单例对象上调用clone方法时出错 这是我的单身班: public class Singleton { private Singleton (){ } private static Singleton singleton; public static Singleton getSingleton(){ if (singleton == null) { singleton = new Singleton();

为什么在单例对象上调用clone方法时出错

这是我的单身班:

public class Singleton  {
    private Singleton (){
    }
    private static Singleton singleton;
    public static Singleton getSingleton(){
        if (singleton == null) {
            singleton = new Singleton();
                    return singleton;
        }
        return singleton;
    }

}
这是一个在Singleton对象上调用clone方法的用户定义类:

public class SingletonDemo {
    public static void main(String[] args) {
        Singleton s = Singleton.getSingleton();
        Singleton s1 = (Singleton)s.clone();
    }
}

您尚未实现可克隆的
Cloneable
,因此,如果您尝试克隆类,将出现异常。您也应该覆盖
clone()

发件人:

在未实现
Cloneable
接口的实例上调用对象的clone方法会导致引发异常
CloneNotSupportedException

同时请注意,克隆一个单身汉会使拥有一个单身汉的目的失效。事实上,一旦你克隆它,它就不再是一个单身汉了


作为一般规则(不应用于单体),考虑复制构造函数而不是克隆。

您能提供更多关于此的信息。你想做什么,为什么你甚至想克隆一个单例(如果你想克隆它,你没有正确地使用它)。