当前位置: 首页 > 面试题库 >

Java深度克隆实用程序推荐

阮鸿煊
2023-03-14
问题内容

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

  • Arrays
  • Lists
  • Maps

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


问题答案:

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

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

那么解决方案是什么:

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

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


 类似资料:
  • 问题内容: 我想知道是否有推荐的方法可以在Java中进行实例的深层克隆/复制。 我有3个解决方案,但我可能会想念一些,我想征求你的意见 编辑:包括Bohzo命题,并提炼问题:更多是关于深克隆而不是浅克隆。 自己做: 在属性之后手动编写代码,并检查是否也复制了可变实例。 优点: -控制将执行的操作 -快速执行 缺点: -繁琐的编写和维护 -容易发生错误(复制/粘贴失败,缺少属性,重新分配了可变属性)

  • 问题内容: 是否存在Java实用程序,该实用程序可以执行以下方法:不仅复制地图对象(如in 类),还复制地图元素? 问题答案: 元素中提到的其他对象呢?您想要克隆多深? 如果您的地图元素没有任何深层引用和/或所有内容都是,则可以将地图序列化为,然后立即将其反序列化。 唯一的替代方法是手动执行。

  • deepClone 对象深度克隆 注意 由于JS对象包括的范围非常广,加上ES6又有众多的新特性,很难、也没必要做到囊括所有的类型和情况,这里说的"对象",指的是普通的对象,不包括修改对象原型链, 或者为"Function","Promise"等的情况,请留意。 场景: 我们平时可能会遇到需要通过console.log打印一个对象,至执行打印的时刻,此对象为空,后面的逻辑中对此对象进行了修改赋值,

  • 问题 你想复制一个对象,包含其所有子对象。 解决方案 clone = (obj) -> if not obj? or typeof obj isnt 'object' return obj if obj instanceof Date return new Date(obj.getTime()) if obj instanceof RegExp flags

  • 本文向大家介绍JavaScript浅层克隆与深度克隆示例详解,包括了JavaScript浅层克隆与深度克隆示例详解的使用技巧和注意事项,需要的朋友参考一下 1 相关知识点 浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。 深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象

  • 本文向大家介绍对象深度克隆的简单实现?相关面试题,主要包含被问及对象深度克隆的简单实现?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: ES5的常用的对象克隆的一种方式。注意数组是对象,但是跟对象又有一定区别,所以我们一开始判断了一些类型,决定newObj是对象还是数组~