Можно ли проверить инициализировано ли поле помеченное lateinit

«Можно ли проверить инициализировано ли поле помеченное lateinit» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для проверки инициализации lateinit поля используйте ::fieldName.isInitialized. Это рефлексивное свойство доступно с Kotlin 1.2.

Пример:

class Example {
    lateinit var name: String

    fun checkInit() {
        if (::name.isInitialized) {
            println("Initialized: $name")
        } else {
            println("Not initialized")
        }
    }
}

Важно:

  • Работает только с lateinit var (не с val или nullable типами).
  • Вызов на не-lateinit поле вызовет исключение.
  • Не рекомендуется часто использовать в продакшн-коде (рефлексия имеет накладные расходы).