Класи даних здаються заміною старомодним 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()
componentN()які повертають значення N-го властивості. Дивіться документи про багатодекларації