有没有办法制作一个对象的副本(甚至更好的对象列表)? 我在谈论可以由其他类扩展的类的自定义对象。
示例:
class Foo() {
var test = "test"
}
class Bar() extends Foo {
var dummy = new CustomClass()
}
var b = new Bar()
var bCopy = b.copy() // or something?
答案 0 :(得分:21)
在Java中,他们试图通过在所有超级类中调用clone
来解决这个问题,但这通常被认为是破坏的并且最好避免,原因你可以看一下up(例如here)。
因此,在Scala中,作为Java中的基本实体,您必须为任意类创建自己的复制方法,这将允许您指定诸如深度和浅层复制字段之类的内容。
如果您上课clone
,则免费获得case class
方法。它实际上比这更好,因为你可以同时更新任何字段:
copy
但是,不推荐从案例类继承。