为什么在Singleton对象上调用clone方法时会出错?
这是我的Singleton类:
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();
}
}
答案 0 :(得分:0)
您尚未实施Cloneable
因此,如果您尝试克隆您的课程,则会收到异常。您也应该覆盖clone()
。
来自the docs:
在未实现
Cloneable
接口的实例上调用Object的clone方法会导致抛出异常CloneNotSupportedException
。
请注意advice in the comments - 克隆单身人士会使首先拥有一个人的目的失效。事实上,你克隆它的那一刻它不再是单身。
作为一般规则(不适用于单身人士),请考虑使用复制构造函数而不是克隆。