java – 浅层复制单例类对象是否可能?
发布时间:2020-12-15 08:26:31 所属栏目:Java 来源:网络整理
导读:使用clone方法,我们可以得到一个已经成为单例的类的许多实例吗? 此外,是否有必要编写“implements Cloneable”,因为我了解到所有对象都是从Object类扩展的,因此在Object的另一个子节点上调用protected clone()的子对象应该没有访问问题 解决方法 直到你用你
使用clone方法,我们可以得到一个已经成为单例的类的许多实例吗?
此外,是否有必要编写“implements Cloneable”,因为我了解到所有对象都是从Object类扩展的,因此在Object的另一个子节点上调用protected clone()的子对象应该没有访问问题 解决方法
直到你用你的单例实现Cloneable才会发生(这是一种反模式,因为它与单例的目的相矛盾).所以,只有你做这样的事情才会发生:
SomeClass.java class SomeClass implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } Singleton.java class Singleton extends SomeClass { public static Singleton instance = new Singleton(); private Singleton() {} } Main.java class Main { public static void main(String[] args) throws CloneNotSupportedException { Singleton singleton1 = Singleton.instance; Singleton singleton2 = singleton1.clone(); System.out.println("singleton1 : " + singleton1.hashCode()); System.out.println("singleton2 : " + singleton2.hashCode()); } } 产量
即使在这种情况下,您也可以通过在Singleton中覆盖clone并抛出异常来解决此问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |