我只是在尝试找出最佳解决方案,以深度复制HashMap
。这个映射中没有实现Cloneable
的对象。我希望能找到比序列化和反序列化更好的解决方案。
请查看Deep Cloning,在Google Code上你可以找到一个库。你可以在https://github.com/kostaskougios/cloning上阅读它。
它的工作原理很简单。这个库可以克隆任何对象,而且对象不需要实现任何接口,比如Serializable。
Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);
// clone is a deep-clone of o
请注意:这可能会克隆数千个对象(如果克隆的对象具有那么多引用)。此外,复制文件或流可能会导致JVM崩溃。
但是,您可以忽略某些类的实例,例如流等。值得检查此库及其源代码。
cloner.deepClone(Object1);
时,它会深度复制所有内容吗? - zengr这并不容易,我们使用某种解决方法:
1)将地图转换为 JSON 字符串。(例如,使用 Google Gson)
2)将 JSON 字符串转换回地图。
请注意,这会影响性能,但这是最简单的方式。
transient
属性或一个stream
等等... - Bruno Grieder