栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

加快Java深度复制操作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

加快Java深度复制操作

在Hibernate中(特别是在第二级缓存中)实现了一种比序列化更快的替代方法。我不知道详细信息,但是您可以查看源代码。

您可能知道

clone()
接口已损坏,因此最好避免使用,除非有确实令人信服的理由使用它。摘自Effective Java 2nd
Edition
,第11条: 明智地覆盖克隆

考虑到与关联的所有问题

Cloneable
,可以肯定地说其他接口不应该扩展它,并且为继承而设计的类(第17项)也不应实现它。由于它的许多缺点,一些专业的程序员只是选择永不重写该
clone
方法,也不要调用它,除非复制数组。如果您设计用于继承的类,请注意,如果您选择不提供行为良好的受保护
clone

方法,则子类将无法实现
Cloneable

更新:浅/深克隆

从clone()API中:

创建并返回此对象的副本。“复制”的确切含义可能取决于对象的类别。[…]

按照惯例,此方法返回的对象应独立于该对象(正在克隆)。为了实现这种独立性,可能有必要在返回super.clone之前修改对象的一个​​或多个字段。通常,这意味着复制构成要克隆对象的内部“深度结构”的任何可变对象,并用对副本的引用替换对这些对象的引用。如果一个类仅包含原始字段或对不可变对象的引用,则通常情况是无需修改super.clone返回的对象中的任何字段。

因此,实际上,惯例是进行深层复制。

不过,首选的替代方法是定义一个复制构造函数或一个独立的方法,而不是覆盖

clone()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号