Что такое lateinit в Kotlin

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

Ответ

lateinit — это модификатор в Kotlin, позволяющий отложить инициализацию non-null свойства до момента его первого использования.

Особенности:

  • Работает только с var (не с val).
  • Тип свойства не может быть примитивом (например, Int, Boolean).
  • Перед использованием нужно убедиться, что свойство инициализировано (иначе UninitializedPropertyAccessException).

Пример:

class MyClass {
    lateinit var name: String

    fun initName() {
        name = "Kotlin"
    }

    fun printName() {
        if (::name.isInitialized) {
            println(name)
        }
    }
}

Когда использовать:

  • Когда инициализация происходит через DI (например, Dagger) или в onCreate() для Android.
  • Альтернатива nullable-типам (String?), если уверены, что свойство будет проинициализировано до использования.