Sobes.tech
Back to questions
Junior — Middle
69

Какова роль свойства 'by lazy' в Kotlin и в каких сценариях его использование уместно?

Companies where asked
trendtech

Answer from AI

sobes.tech AI

В Kotlin свойство с модификатором by lazy инициализируется лениво — то есть значение вычисляется только при первом обращении к свойству, а не при создании объекта. Это полезно, когда инициализация ресурсоёмкая или не всегда нужна.

Пример использования:

val heavyResource by lazy {
    println("Инициализация")
    "Результат"
}

fun main() {
    println("Перед обращением")
    println(heavyResource) // Здесь происходит инициализация
    println(heavyResource) // Повторная инициализация не происходит
}

Сценарии использования:

  • Отложенная инициализация объектов, которые нужны не всегда.
  • Оптимизация производительности.
  • Безопасная инициализация в многопоточном окружении (по умолчанию lazy потокобезопасен).