Les classes de données semblent remplacer les POJO à l'ancienne en Java. Il est tout à fait prévisible que ces classes permettent l'héritage, mais je ne vois aucun moyen pratique d'étendre une classe de données. Ce dont j'ai besoin est quelque chose comme ça:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Le code ci-dessus échoue en raison d'un conflit de component1()
méthodes. Laisser une data
annotation dans une seule des classes ne fait pas non plus le travail.
Peut-être existe-t-il un autre langage pour étendre les classes de données?
UPD: Je pourrais annoter uniquement la classe enfant enfant, mais l' data
annotation ne gère que les propriétés déclarées dans le constructeur. Autrement dit, je devrais déclarer toutes les propriétés des parents open
et les remplacer, ce qui est moche:
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()
qui retournent la valeur de la propriété N-ième. Voir la documentation sur les multi-déclarations