是否有任何用于深度克隆 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);
关于java - 深度克隆实用程序推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665860/