в этом примере?
https://pl.kotl.in/ffwbqUTXe
Баг или я чего-то не знаю про порядок инициализации и null-safety? Если поставить геттер в переопределенном свойстве, то все нормально.
Думаю связано с порядком инициализации. По ссылке вероятно схожий кейс рассматривается https://medium.com/keepsafe-engineering/an-in-depth-look-at-kotlins-initializers-a0420fcbf546
Идея должна подсвечивать ворнингом, проблема в том что не финальные* свойства так могут себя вести. Чесно не знаю баг это или нет, тут порядок инициализации + что свойства это наличие гетерра
Подсвечивает, верно. Просто я наивно полагал, что при инициализации свойства, которое переопределено, он вне очереди вытащит значение из дочернего класса. Что он и делает, когда есть геттер. А без геттера он просто null. Видимо это поломало бы всю логику, если бы реализация была именно такой.
Ну сначало выполняется родительский конструктор потом дочерний
Логично, да. Просто я полагал, что могут быть исключения при наличии нужного значения в дочернем классе. Теперь, в принципе, мне все понятно. Благодарю.
Обсуждают сегодня