Выбор ответа Middle Null-safety обновлено

Как проверить инициализацию lateinit

Вопрос

Как проверить, что lateinit var adapter уже инициализирован?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: ::adapter.isInitialized. Для lateinit есть свойство ссылки на свойство: this::adapter.isInitialized.

Варианты ответа

  1. adapter != null
  2. adapter.isInitialized()
  3. Никак, нужно ловить NullPointerException
  4. ::adapter.isInitializedправильный ответ

Разбор

Для lateinit есть свойство ссылки на свойство: this::adapter.isInitialized. Сравнение adapter != null само обращается к свойству и бросит UninitializedPropertyAccessException до инициализации (не NPE). У самого объекта метода isInitialized() нет. Ловить исключение можно, но это антипаттерн.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.