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;
不需要强制进行类型转换;
建议使用最佳实践
分享到:
相关推荐
darts-clone-java 用Java编写的Double-ARray Trie System克隆。 该库基于称为“快速高效”库的 。入门设置要使用Maven添加依赖项,请使用以下命令: < dependency> < groupId>...
android-java-organizze-clone
Facebook-login-page-clone-main-源码.rar
3D-clash-royale-clone.zip,一个统一的克隆超级细胞的氏族冲突衍生出移动游戏冲突皇家可能有些曲折。,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及...
git-pull-or-clone 确保磁盘上存在一个git repo,并且它是最新的 安装 npm install git-pull-or-clone 用法 const gitPullOrClone = require ( 'git-pull-or-clone' ) gitPullOrClone ( 'git@github....
git-clone-init:在git clone上自动设置用户身份(user.email user.name)
语音克隆模型
水果飞刀休闲游戏-(Knife Hit Unity Clone).rar
react-native-instagram-clone:instagram与世博会克隆
图像清晰化系列-图片克隆放大器clone v2.0免费版
使用的软件包: 世博会React导航安装与世博会克隆此仓库git clone git@github.com/dev-andremonteiro/react-native-twitter-clone.git cd react-native-twitter-clone 运行npm install 运行expo start没有世博会...
在使用高版本版KEIL时,提示要升级固件,升级后就出现JLINK is Clone的提示!“the emulator is JLink-Clone, the segger software only support orginal segger device” 然后闪退,IDE崩溃关闭! 解决方案: 1....
jVi is a vi/vim editor clone built on top of the javax.swing.text package. Available for NetBeans and JBuilder. jVi is designed to quickly and easily integrate into many disparate java based desktop ...
You can convert the midi to chart on Clone Hero.
.NET Wiki Source Good Examples MoinWiki Clone, Good Wiki Engine and ASP.NET code.
详细描述了java基础中的数组与方法的应用技术,以及面向对象的过程思想,有助于java初学者的入门学习。
A-Flappy-Bird-Clone 我使用 libGDX-Framework 进行了重制,现在效果更好了。 你可以得到最新的二进制文件 [here] ( )。
用 Java 语言编写的 初学者可学习的clone()
详细的描述了Java中 clone方法使用