当前位置:  开发笔记 > 编程语言 > 正文

你用了什么Object.clone()?

如何解决《你用了什么Object.clone()?》经验,为你挑选了2个好方法。

一位同事最近问我如何深度克隆Map,我意识到我可能从未使用过克隆()方法 - 这让我很担心.

您找到克隆对象的最常见方案是什么?



1> Julien Chast..:

我假设你指的Object.clone()是Java.如果是,请注意Object.clone()有一些重大问题,并且在大多数情况下不鼓励使用它.请参阅Joshua Bloch的"Effective Java"中的第11项,以获得完整的答案.我相信你可以安全地使用Object.clone()原始类型的数组,但除此之外,你需要明智地正确使用和重写克隆.您可能最好定义一个复制构造函数或静态工厂方法,根据您的语义显式克隆对象.


对 - 最常见的情况是"不要使用克隆".

2> Paul Tomblin..:

最常见的情况是,当我必须将一个可变对象返回给调用者时,我担心调用者可能会捣乱,通常是以线程不友好的方式.列表和日期是我最常做的.如果调用者可能想要迭代List并且我有线程可能更新它,那么返回它的克隆或副本会更安全.

实际上,这会带来一些我需要开辟的另一个问题:复制构造函数还是克隆?当我做C++时,我们总是做一个复制构造函数并用它实现克隆,但是如果你使用复制构造函数实现你的克隆,FindBugs不喜欢它.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有