Datenklassen scheinen der Ersatz für die altmodischen POJOs in Java zu sein. Es ist durchaus zu erwarten, dass diese Klassen eine Vererbung ermöglichen, aber ich sehe keine bequeme Möglichkeit, eine Datenklasse zu erweitern. Was ich brauche ist so etwas:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Der obige Code schlägt aufgrund von component1()
Methodenkonflikten fehl . Das Belassen von data
Anmerkungen nur in einer der Klassen erledigt die Arbeit ebenfalls nicht.
Vielleicht gibt es eine andere Redewendung, um Datenklassen zu erweitern?
UPD: Ich kann nur untergeordnete untergeordnete Klassen mit data
Anmerkungen versehen, aber mit Anmerkungen werden nur Eigenschaften behandelt, die im Konstruktor deklariert sind. Das heißt, ich müsste alle Eigenschaften der Eltern deklarieren open
und überschreiben, was hässlich ist:
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()
, die den Wert der N-ten Eigenschaft zurückgeben. Siehe Dokumente zu Multi-Deklarationen