lateinit
используется для отложенной инициализации изменяемых свойств (var
), которые не могут быть nullable и будут инициализированы позже, например, в методе жизненного цикла активности или фрагмента. Компилятор не гарантирует инициализацию, и доступ к неинициализированному свойству вызовет исключение UninitializedPropertyAccessException
.
by lazy {}
используется для отложенной инициализации неизменяемых свойств (val
). Инициализация выполняется при первом доступе к свойству, и результат кешируется. Это потокобезопасно по умолчанию и гарантирует, что инициализатор будет вызван только один раз.
Признак | lateinit | by lazy {} |
---|---|---|
Применяется к | var | val |
Nullability | Не nullable | Не nullable |
Гарантия инициализации | Нет (только разработчиком) | Да (при |
lateinit
используется для отложенной инициализации изменяемых свойств (var
), которые не могут быть nullable и будут инициализированы позже, например, в методе жизненного цикла активности или фрагмента. Компилятор не гарантирует инициализацию, и доступ к неинициализированному свойству вызовет исключение UninitializedPropertyAccessException
.
by lazy {}
используется для отложенной инициализации неизменяемых свойств (val
). Инициализация выполняется при первом доступе к свойству, и результат кешируется. Это потокобезопасно по умолчанию и гарантирует, что инициализатор будет вызван только один раз.
Признак | lateinit | by lazy {} |
---|---|---|
Применяется к | var | val |
Nullability | Не nullable | Не nullable |
Гарантия инициализации | Нет (только разработчиком) | Да (при |
Register or sign in to get access to full answers for all questions from the question bank.