Что такое lateinit

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

Ответ

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

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

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

Пример:

class MyService {
    lateinit var apiClient: ApiClient

    fun initClient() {
        apiClient = ApiClient.create()
    }

    fun fetchData() {
        check(::apiClient.isInitialized) { "ApiClient not initialized!" }
        apiClient.getData()
    }
}

Альтернатива: Для nullable-свойств используйте var someProperty: Type? = null.