Las clases de datos parecen ser el reemplazo de los POJO anticuados en Java. Es bastante esperable que estas clases permitan la herencia, pero no veo una manera conveniente de extender una clase de datos. Lo que necesito es algo como esto:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
El código anterior falla debido al choque de component1()
métodos. Dejandodata
anotaciones en solo una de las clases tampoco hace el trabajo.
¿Quizás hay otro idioma para extender las clases de datos?
UPD: podría anotar solo la clase secundaria hijo, pero la data
anotación solo maneja las propiedades declaradas en el constructor. Es decir, tendría que declarar todas las propiedades de los padres open
y anularlas, lo cual es feo:
open class Resource (open var id: Long = 0, open var location: String = "")
data class Book (
override var id: Long = 0,
override var location: String = "",
var isbn: String
) : Resource()
componentN()
que devuelven el valor de la propiedad N-ésima. Ver documentos sobre Declaraciones Múltiples