锁定老帖子 主题:深入理解java的clone
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-10
最后修改:2009-10-10
这个角度理解是可以的。没有这么描述是因为有人对java的值传递理解不透彻。其实你这里的指针copy也是值传递的一种,但是很多人不同意这个说法的。最后知道大家都理解发生了什么,只是名字未必叫的一样,所以就不用值传递这个名词了。
Foxswily 写道 LZ提到的关键点个人认为是支持Cloneable的所有类要负责完成自己的clone任务,而不要在负责组合的类中全权承担。
恩,clone是一个体系,需要所有相关的类参与其中。 负责组合的类未必有办法clone它所引用的类实例。 |
|
返回顶楼 | |
发表时间:2009-10-10
恩 其实真正理解了楼主的预备知识,clone也是很好理解的
|
|
返回顶楼 | |
发表时间:2009-10-10
patrickyao1988 写道 恩 其实真正理解了楼主的预备知识,clone也是很好理解的 嗯,任何东西基础总是最重要的。 |
|
返回顶楼 | |
发表时间:2009-10-11
分析的不错。Java的每一举一动都会和内存有关系。
|
|
返回顶楼 | |
发表时间:2009-10-11
分析的很有道理,我想请教一下 serilization方式的克隆跟 结构化类克隆有什么区别?
|
|
返回顶楼 | |
发表时间:2009-10-11
galaxystar 写道 如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。
两者有什么区别与联系? |
|
返回顶楼 | |
发表时间:2009-10-11
ideal46 写道 galaxystar 写道 如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。
两者有什么区别与联系? 你可以参考下这篇文章所述: http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html |
|
返回顶楼 | |
发表时间:2009-10-11
我记得某大师说过,clone是java里相对比较没用的特性之一,这位大师说在他写java10多年的历史上,用到clone不超过5次,而且几乎都有可替代的解决方法。你能设想一个必须使用clone解决问题或者不使用clone就要绕很大弯路才能实现的场景么?
|
|
返回顶楼 | |
发表时间:2009-10-11
galaxystar 写道 如果不考虑性能的话,深copy用serialization是比较简单,有效的做法。
我在主贴里更新了和serialization的比较。 |
|
返回顶楼 | |
发表时间:2009-10-11
unsid 写道 我记得某大师说过,clone是java里相对比较没用的特性之一,这位大师说在他写java10多年的历史上,用到clone不超过5次,而且几乎都有可替代的解决方法。你能设想一个必须使用clone解决问题或者不使用clone就要绕很大弯路才能实现的场景么?
大师说的话不能全信,因为很多大师说的话都是矛盾的。 基本上任何方法都会有替代的方案的。 clone不止是Cloneable接口而已,而是一个机制,背后的思想是原型模式。 当Cloneable适用于要clone的类时,选择Cloneable本身还是比较简单的,当有其它限制时,考虑copy构造函数或者静态copy方法或者其它方案。 |
|
返回顶楼 | |