小编典典

Java深度克隆实用程序推荐

java

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

  • Arrays
  • Lists
  • Maps

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


阅读 478

收藏
2020-03-16

共1个答案

小编典典

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

  • 它添加了很多代码
  • 它要求你列出所有要复制的字段并执行此操作
  • 当使用clone()时,这对列表不起作用(这是HashMap的clone()所说的:返回此HashMap实例的浅表副本:键和值本身不会被克隆。)因此你最终需要手动进行操作(这使得我哭)
    哦,顺便说一句,序列化也很糟糕,你可能必须在各处添加Serializable(这也让我哭了)。

那么解决方案是什么:

Java深度 克隆库克隆库是一个小型的,开源的(Apache许可证)Java库,用于深度克隆对象。对象不必实现Cloneable接口。实际上,该库可以克隆任何java对象。如果你不希望修改缓存的对象,或者想要创建对象的深层副本,则可以在缓存实现中使用它。

Cloner cloner=new Cloner();
XX clone = cloner.deepClone(someObjectOfTypeXX);
2020-03-16