java - 深度克隆实用程序推荐

标签 java clone

是否有任何用于深度克隆 java 集合的实用程序:

  • 数组
  • 列表
  • map

注意:更喜欢一些不使用序列化的解决方案,但使用 Object.clone() 方法。我可以确定我的自定义对象将实现 clone() 方法,并且将仅使用可克隆的 java 标准类...

最佳答案

我认为之前的绿色答案不好,你为什么会问?

  • 它增加了很多代码
  • 它要求您列出要复制的所有字段并执行此操作
  • 当使用 clone() 时,这不适用于列表 (这就是 HashMap 的 clone() 所说的:返回这个 HashMap 实例的浅拷贝:键和值本身没有被克隆。)所以你最终手动完成(这让我哭了)

哦,顺便说一句,序列化也很糟糕,你可能不得不到处添加 Serializable(这也让我哭了)。

那么解决办法是什么:

Java 深度克隆库 克隆库 是一个小型的开源(apache 许可证)java 库,它可以深度克隆对象。对象不必实现 Cloneable 接口(interface)。实际上,这个库可以克隆任何 java 对象。如果您不希望修改缓存的对象或想要创建对象的深拷贝,则可以在缓存实现中使用它。

Cloner cloner=new Cloner();
XX clone = cloner.deepClone(someObjectOfTypeXX);

查看 https://github.com/kostaskougios/cloning

关于java - 深度克隆实用程序推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665860/

相关文章:

java - 如何使用 VRaptor 在 Heroku 中部署

java - 如何使用 ADB/AM 调试 Android 应用程序?

mercurial - 我可以在不进行完整克隆的情况下获取 mercurial 存储库的提示快照吗?

javascript - 如何在 JavaScript 中克隆表单并保留事件绑定(bind)

javascript - jquery 选择行克隆后未呈现

gwt:如何编写不会导致 "The method clone() is undefined for the type Object"错误的 clone() 方法?

java - 我应该在公共(public)类中使用静态类,还是只是一个单独的类

java - 无法理解的 JUnit 错误

java - Struts2、JPA(支持 hibernate )、Spring ... Struts2 和 Spring 日志记录都通过 log4j 但不是 hibernate 工作

javascript - 克隆div时如何更改数据属性