首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala AnyRef.clone是执行浅层复制还是深层复制?

Scala AnyRef.clone是执行浅层复制还是深层复制?
EN

Stack Overflow用户
提问于 2009-08-12 16:28:51
回答 1查看 6.6K关注 0票数 14

在Scala中,AnyRef.clone是执行浅拷贝还是深拷贝?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-12 17:08:34

Short answer:浅显。

不那么简短的答案:除非被覆盖,否则AnyRef.clone()将使用的Object.clone()作为其实现。

Object.clone()上的Javadoc:

类对象的方法克隆执行特定的克隆操作。首先,如果此对象的类没有实现Cloneable接口,则抛出CloneNotSupportedException。请注意,所有数组都被认为实现了Cloneable接口。否则,此方法将创建此对象的类的新实例,并使用此对象的相应字段的内容完全初始化其所有字段,就像通过赋值一样;字段的内容本身不会被克隆。因此,此方法执行此对象的“浅复制”,而不是“深复制”操作。

请注意:

Cloneable就像它在Java中的对应物一样,有一个“受保护”的访问级别,所以它的克隆不能从everywhere.

  • You调用的需要实现才能使Cloneable()工作。

Java :Read Effective Java第2版,第11项:明智地覆盖克隆

摘要:不要使用它。还有更好的选择。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1267261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档