首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala collection.mutable.Cloneable用途

Scala collection.mutable.Cloneable用途
EN

Stack Overflow用户
提问于 2012-07-19 20:05:38
回答 1查看 346关注 0票数 2

在尝试克隆可变集合时,我最初的方法是在mutable.Cloneable特征上使用clone()方法。但是,这取决于创建引用副本的java.Object.clone实现,而不是深层副本。通过测试,我可以确认可变的。{Queue,Seq,Set}都是浅拷贝。

我求助于粗糙的新xxx(copy:_*)方法来创建一个深度副本,但是我的问题是,如果没有实现mutable.Cloneable特征,那么它的目的是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-07-19 20:07:30

在许多集合类上实现了mutable.Cloneable特征。这里有几个例子:

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/ArrayBuffer.scala#L176

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/HashSet.scala#L82

https://github.com/scala/scala/blob/master/src/library/scala/collection/mutable/WrappedArray.scala#L78

只是clone没有定义为返回深度副本。这样做的原因是,通常你只是想复制一个可变的集合,这样你就可以在不改变原始集合的情况下以某种方式修改它--你可能希望保持它内部的实际元素不变。

如果你想要一个深度拷贝,你必须使用一个自定义的深度复制库,或者自己实现它。

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

https://stackoverflow.com/questions/11560506

复制
相关文章

相似问题

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