podría estar acercándose a mal, pero me gustaría tener un objeto como éste:Scala: ¿Cómo puedo implementar un método de clonación en una superclase y usarlo en una subclase?
class MyDataStructure {
def myClone = {
val clone = new MyDataStructure
// do stuff to make clone the same as this
...
clone
}
}
class MyDataStructureExtended(val foo: String) extends MyDataStructure
continuación:
val data = MyDataStructureExtended
val dataClone = data.clone
println(dataClone.foo)
Por lo tanto, el problema es que dataClone es de tipo MyDataStructure , no MyDataStructureExtended como yo esperaba.
Pensé en agregar un tipo T a la súper clase, que la subclase puede especificar (por ejemplo, sí), pero eso no parecía muy prometedor.