1、clone方法的通用约定是非常弱的
x.clone()!=x
x.clone().getClass()==x.getClass()
x.clone().equals(x)
都不是绝对的要求
2、Clone方法就是另一个构造器,你必须保证它不会伤害到原始的对象,并确保正确地创建被克隆对象中的约束条件。
3、clone架构与应用可变对象的final域的正常用法是不兼容的。
4、深度clone,典型例子HashTable
5、线程安全的类实现Cloneable接口,clone方法必须实现好同步:HashTable。
总结:
(1)默认实现方式
实现了Cloneable接口的类都应该有一个公用的方法覆盖clone:
@Override public PhoneNumber clone() {
super.clone();
}
此公有方法首先调用super.clone(),然后修正任何需要修正的域(浅克隆、深度克隆)。
(2)最佳实践
实现对象的拷贝的好办法是提供一个拷贝构造器(copy constructor)或者拷贝工厂(copy factory)
相比Cloneable/clone优点:
不依赖于某一种很有风险的,语言之外的对象创建机制;
不要求遵守尚未制定好的文档规范;
不会与final域的正常使用发生冲突;
不会抛出不必要的受检查异常CloneNotSupportedException;
不需要强制进行类型转换;
建议使用最佳实践
分享到:
相关推荐
47丨原型模式:如何最快速地clone一个HashMap散列表?1
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
用 Java 语言编写的 初学者可学习的clone()
详细的描述了Java中 clone方法使用
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
Java中的clone方法详解_动力节点Java学院,动力节点口口相传的Java黄埔军校
对java clone的一些讲解,以及我个人的一些心得等等,
Java深浅clone测试代码 流拷贝 Cloneable
现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的...
java code clone
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
clone的用法 希望有帮助,仅供参考 通过例子的分析,可以对克隆的方法有所深入了解
Clone 属性的相关内容 Clone 属性的相关内容
django_insta_clone:django_insta_clone
安装Java 11: brew cask install corretto或下载 将其设置为默认的JVM: export JAVA_HOME='/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home' 克隆此存储库: git clone ...
CloneOfUber:Uber应用的Swift Clone
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
因此,您的.git文件夹将更轻) git clone --depth 1 https://github.com/java-aodeng/hope.git目录面试题+网上看到写得好的文章收集更新中....避坑笔记2021CICDCI/CD流程以及原理说明设计模式:策略模式单例模式工厂...
darts-clone-java 用Java编写的Double-ARray Trie System克隆。 该库基于称为“快速高效”库的 。入门设置要使用Maven添加依赖项,请使用以下命令: < dependency> < groupId>...