Ответ
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?), если уверены, что свойство будет проинициализировано до использования.