论坛首页 Java企业应用论坛

深入理解java的clone

浏览 30268 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-10-10   最后修改:2009-10-10
这个角度理解是可以的。没有这么描述是因为有人对java的值传递理解不透彻。其实你这里的指针copy也是值传递的一种,但是很多人不同意这个说法的。最后知道大家都理解发生了什么,只是名字未必叫的一样,所以就不用值传递这个名词了。

Foxswily 写道
LZ提到的关键点个人认为是支持Cloneable的所有类要负责完成自己的clone任务,而不要在负责组合的类中全权承担。



恩,clone是一个体系,需要所有相关的类参与其中。
负责组合的类未必有办法clone它所引用的类实例。
0 请登录后投票
   发表时间:2009-10-10  
恩  其实真正理解了楼主的预备知识,clone也是很好理解的
0 请登录后投票
   发表时间:2009-10-10  
patrickyao1988 写道
恩  其实真正理解了楼主的预备知识,clone也是很好理解的

嗯,任何东西基础总是最重要的。
0 请登录后投票
   发表时间:2009-10-11  
分析的不错。Java的每一举一动都会和内存有关系。
0 请登录后投票
   发表时间:2009-10-11  
分析的很有道理,我想请教一下  serilization方式的克隆跟 结构化类克隆有什么区别?
0 请登录后投票
   发表时间:2009-10-11  
galaxystar 写道
如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。

两者有什么区别与联系?
0 请登录后投票
   发表时间:2009-10-11  
ideal46 写道
galaxystar 写道
如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。

两者有什么区别与联系?

你可以参考下这篇文章所述:
http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html
0 请登录后投票
   发表时间:2009-10-11  
我记得某大师说过,clone是java里相对比较没用的特性之一,这位大师说在他写java10多年的历史上,用到clone不超过5次,而且几乎都有可替代的解决方法。你能设想一个必须使用clone解决问题或者不使用clone就要绕很大弯路才能实现的场景么?
0 请登录后投票
   发表时间:2009-10-11  
galaxystar 写道
如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。


我在主贴里更新了和serialization的比较。
0 请登录后投票
   发表时间:2009-10-11  
unsid 写道
我记得某大师说过,clone是java里相对比较没用的特性之一,这位大师说在他写java10多年的历史上,用到clone不超过5次,而且几乎都有可替代的解决方法。你能设想一个必须使用clone解决问题或者不使用clone就要绕很大弯路才能实现的场景么?


大师说的话不能全信,因为很多大师说的话都是矛盾的。
基本上任何方法都会有替代的方案的。
clone不止是Cloneable接口而已,而是一个机制,背后的思想是原型模式。
当Cloneable适用于要clone的类时,选择Cloneable本身还是比较简单的,当有其它限制时,考虑copy构造函数或者静态copy方法或者其它方案。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics