Smart cast — автоматическое сужение типа после проверки (is, != null), когда компилятор доказал, что значение не изменится.
Разбор
- После
if (x != null) внутри ветки x — non-null для локальных val.
- Для
var и свойств класса smart cast часто недоступен — копируйте в local val.
when (x) с is тоже даёт smart cast.
- Не путайте с явным
as / as?.
Итог
Smart cast уменьшает boilerplate null-проверок, но зависит от стабильности ссылки.