首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >深拷贝物体

深拷贝物体
EN

Stack Overflow用户
提问于 2012-10-20 07:07:33
回答 3查看 975关注 0票数 2

可以直接从盒子中复制Object吗?即,除了手工编写clone函数之外的任何其他方式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-20 07:38:42

  1. 克隆不一定要执行深度复制。实际上,Object.clone()的默认实现会创建一个浅拷贝。
  2. 如果对象的闭包由实现SerializableExternalizable的对象组成,则可以使用ObjectOutputStreamObjectInputStream创建深度副本.但它很贵。
  3. cloning库是另一种选择,但我对代码的初步理解是,它依赖于图中每个对象的类提供无参数构造函数。然后,它将修补生成的对象,使其具有原始对象状态的副本。这个过程可能会产生不良的副作用,这取决于no构造函数的实际操作。

总之,我不认为有一个普遍的解决办法。

票数 5
EN

Stack Overflow用户

发布于 2012-10-20 07:55:10

我建议使用java.lang.reflect。

java.lang.Class公开所有字段,并允许读取公共字段和调用公共方法。

只有没有访问器的私有字段才不能被克隆。

票数 0
EN

Stack Overflow用户

发布于 2012-10-20 07:58:12

我简要地查看了cloning库代码。它所做的事情是:获取对象内部的图形,而不是写入文件,而是写入内存位置=(即对象的克隆)。因此,尽管它比序列化更快,但它当然也在做同样的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12986165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档