As classes de dados parecem substituir os POJOs à moda antiga em Java. É bastante esperado que essas classes permitam herança, mas não vejo uma maneira conveniente de estender uma classe de dados. O que eu preciso é algo como isto:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
O código acima falha devido a conflito de component1()
métodos. Deixar a data
anotação em apenas uma das classes também não funciona.
Talvez haja outro idioma para estender as classes de dados?
UPD: Eu posso anotar apenas classe filho filho, mas a data
anotação trata apenas das propriedades declaradas no construtor. Ou seja, eu teria que declarar todas as propriedades dos pais open
e substituí-las, o que é feio:
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 retornam valor da N-ésima propriedade. Veja documentos sobre Multi-Declarações