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