Классы данных, похоже, заменяют старомодные 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()