Lui*_*hys 21
在Java中,他们尝试clone通过clone在所有超类中调用来解决这个问题,但这通常被认为是破坏的并且最好避免,原因是你可以查找(例如这里).
因此,在Scala中,作为Java中的通常,您必须为任意类创建自己的复制方法,这将允许您指定诸如深度和浅层复制字段之类的内容.
如果你让你上课case class,你可以copy免费获得一个方法.它实际上比那更好,因为你可以同时更新任何字段:
case class A(n: Int)
val a = A(1) // a: A = A(1)
val b = a.copy(a.n) // b: A = A(1)
val c = a.copy(2) // c: A = A(2)
Run Code Online (Sandbox Code Playgroud)
但是,不推荐继承自case类.