Cloneable Interface in java
2015-07-29 10:00
260 查看
原 Cloneable
Interface in java
发表于1年前(2014-04-24 01:37) 阅读(38) | 评论(0) 2人收藏此文章, 我要收藏赞0
一个类实现该接口表明该类的实例通过java.lang.Object#clone()方法拷贝字段的字段是合法的。
在一个没有实现该接口的实例上调用对象的clone方法会抛出CloneNotSupportedException异常。
通常,类实现该接口应该用public重写Object.clone方法(protected)。
注意,该接口没包含clone方法,因此,仅仅实现该接口是不可能克隆对象,即使通过反射调用克隆方法,也不能保证它会成功。
克隆一个对象是一个对象的不同标识和相同的内容,定义克隆,一个类必须实现Cloneable接口并且使用public重写对象的clone方法。此时,
克隆接口没有包含任何克隆方法,对象的clone方法是protected。
//没有实现该接口的实例上调用对象的clone方法会抛出CloneNotSupportedException异常
?
?
如果在一个non-final类中重写clone方法,你应该通过调用super.clone返回一个对象。
如果所有类的父类都服从这个规则,则调用super.clone将最终调用Object.clone方法,创建一个正确类的实例。
//若下面的类没有服从该规则
?
如果每个字段包含一个原始类型的值or引用一个不可变对象,不需要进一步处理。
如果引用了可变对象,为了克隆工作正常,它要求调用这些可变引用的clone方法。
//克隆可变引用
?
如果实现一个线程安全可克隆类,注意它的clone方法必须正确同步就像任何其他方法一样。
实现clone方法非常棘手,避免实现它,寻找其他可代替方法
相关文章推荐
- java开发过程中对于乱码问题的解决方法
- java使用Nagao算法实现新词发现、热门词的挖掘
- 深入解析Java中的内部类
- 在 JAVA多态用在解决什么问题?
- 如何使用JAVA实现数字水印
- 使用Eclipse设定Android开发环境
- Java中Error和Exception的区别
- Java多态性理解
- Java学习之多态
- java基础编程中常见的错误(基本类型)
- java.io,PrintWriter可以用来创建一个文件并向本文文件写入数据
- There is no getter for property named in 'class java.lang.String'
- spring ioc原理
- java---json数据处理
- java ---输入输出流操作(代码整理)
- MyEclipse项目出现红色叹号的问题
- Spring MVC(总结)
- struts2 环境配置
- Struts2从一个action转到另一个action的两种方法
- 设置myeclipse编辑区域背景颜色,以及适宜的健康色值