在Scala中,AnyRef.clone是执行浅拷贝还是深拷贝?
发布于 2009-08-12 17:08:34
Short answer:浅显。
不那么简短的答案:除非被覆盖,否则AnyRef.clone()将使用的Object.clone()作为其实现。
Object.clone()上的Javadoc:
类对象的方法克隆执行特定的克隆操作。首先,如果此对象的类没有实现Cloneable接口,则抛出CloneNotSupportedException。请注意,所有数组都被认为实现了Cloneable接口。否则,此方法将创建此对象的类的新实例,并使用此对象的相应字段的内容完全初始化其所有字段,就像通过赋值一样;字段的内容本身不会被克隆。因此,此方法执行此对象的“浅复制”,而不是“深复制”操作。
请注意:
Cloneable就像它在Java中的对应物一样,有一个“受保护”的访问级别,所以它的克隆不能从everywhere.
Java :Read Effective Java第2版,第11项:明智地覆盖克隆
摘要:不要使用它。还有更好的选择。
https://stackoverflow.com/questions/1267261
复制相似问题