Le classi di dati sembrano sostituire i POJO vecchio stile in Java. È abbastanza prevedibile che queste classi consentirebbero l'ereditarietà, ma non vedo alcun modo conveniente per estendere una classe di dati. Ciò di cui ho bisogno è qualcosa del genere:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Il codice sopra non riesce a causa dello scontro di component1()
metodi. Anche lasciare l' data
annotazione in una sola delle classi non funziona.
Forse esiste un altro linguaggio per estendere le classi di dati?
UPD: Potrei annotare solo la classe figlio secondaria, ma l' data
annotazione gestisce solo le proprietà dichiarate nel costruttore. Cioè, dovrei dichiarare tutte le proprietà dei genitori open
e sostituirle, il che è brutto:
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()
che restituiscono valore della proprietà N-esima. Vedi i documenti sulle dichiarazioni