ну, верно, val неизменяемая пропертя, что там может произойти после ее проверки? что-то что не может произойти в рамках одного модуля
Не утверждение, но вопрос - а между модулями прокидывается информация о типе проперти? Ну, что это просто обычный геттер с backing field без сложной логики, а не computable property?
Покажите на примере, я не понимаю что вы имеете в виду. Обычный котлиновый val в обычном котлиновом классе я не могу изменить после его инициализации. В 2020.1 кстати они пишут чуть более обоснованную историю на счет этой проверки, что геттер может быть переопределен.
По сути он не может изменить тип . Что еще надо то ?) Как он там внутри устроен и какую дату возвращает есть ли разница ?
Формально говоря, разница в том, что смарт касты такая вещь, которая смотрит не только просто на тип. Если просто смотреть на тип - тогда всегда будет возвращаться nullable type, никакого вопроса и нету.
Покажите на примере, я не понимаю что вы имеете в виду. Обычный котлиновый val в обычном котлиновом классе я не могу изменить после его инициализации. В 2020.1 кстати они пишут чуть более обоснованную историю на счет этой проверки, что геттер может быть переопределен.
class Example { val example: String? get() = if (randInt() > 50) "it's ok" else null }