[Java] 对clone的控制
来源:互联网 发布:高等数学网络课程 编辑:程序博客网 时间:2024/05/21 22:25
所有使用clone方法的类,不论是继承Object.clone()还是覆盖它,都必须实现一个名为cloneable的接口。如果你打开java类库查一下,会发现这个接口里什么也没有,它仅仅是表明某个类具有被clone的能力。
你在设计自己的类时,有以下几种风格来控制clone能力:
你在设计自己的类时,有以下几种风格来控制clone能力:
- 不理会clone(),也就是在你的类中不涉及任何有关clone()的内容,如果有人想实现clone功能,必须写一个子类并完成刚才所说的要求。这适合于Object.clone()可以胜任复制你的类中全部字段的情况。
- 支持clone()。你在你的类中实现cloneable接口并且覆盖clone方法以及捕获相应的异常。
- 有条件的支持clone()。这种情况有些特殊,也就是你的类中保存着一些可能不能被复制的对象的引用(这里是指它们没有实现cloneable)。这时候你只是在clone()中复制所有这些对象,如果遇到异常,抛出所有这些异常给使用你的类的人。举个例子,假设你在写一个类似于ArrayList的类,你不知道别人会在把什么样的对象保存在你的ArrayList里,所以你也不知道他们是否能够被复制。
- 不实现cloneable接口但覆盖clone方法为protected。这样你虽然让你的类不能被复制,但却提供了正确的clone方法,这样如果有人想复制你的类,写一个子类实现cloneable接口就行了。
- 不实现cloneable接口并覆盖clone方法直接抛出异常来防止你的类被复制。不过这并不是根本的解决方法,只能对付那些直接调用你的clone方法或是在子类中调用super.clone()的人。
- 使用final修饰你的类来防止你的类被复制。如果你的超类中有覆盖clone方法的,再重新覆盖clone方法并直接抛出异常。这也是最彻底的办法。
原文:http://www.frontfree.net/view/article_675.html
- [Java] 对clone的控制
- 对java中clone的看法
- Java中对Clone的理解
- Java中对Clone的理解
- 对 Java 中 clone 方法的思考
- Java中对Clone的理解
- java面试基础-Java中对Clone的理解
- Java中的克隆clone以及对数组的复制
- 浅谈Java的Clone
- java 的clone方法
- Java的clone机制
- java 的clone
- 关于Java的clone()
- 理解java的clone
- java里的clone
- JAVA的Clone
- Java的clone方法
- java的clone方法
- 如何显示浏览文件夹对话框
- acm.jlu.edu.cn-1317-Tree Recovery
- Java中对文件的操作
- 用WebWork实现进度条显示
- SQL高手篇:精妙SQL语句介绍
- [Java] 对clone的控制
- 对数据构型的小测试
- 你该学什么程序语言?[转贴:蔡学墉]
- 回顾与反思(2)
- hymn新闻系统(后台程序)全部源代码
- acm.jlu.edu.cn-1552-Identifying Legal Pascal Real Constants
- 借助VMware实现单机使用WinDbg
- 协议Jiurl255 技术参考
- 32位代码优化常识