Расширить класс данных в Котлине
Классы данных, кажется, являются заменой старомодным POJO в Java. Вполне ожидаемо, что эти классы позволят наследовать, но я не вижу удобного способа расширить класс данных. Что мне нужно, это что-то вроде этого:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Код выше не работает из-за столкновенияcomponent1()
методы. уходdata
аннотация только в одном из классов тоже не работает.
Возможно, есть другая идиома для расширения классов данных?
UPD: я могу аннотировать только дочерний дочерний класс, ноdata
аннотация обрабатывает только свойства, объявленные в конструкторе. То есть я должен был бы объявить все родительские свойстваopen
и переопределить их, что некрасиво
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()