Что такое ленивая инициализация

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

Ответ

Ленивая инициализация — это отложенное создание объекта до момента его первого использования. В Android часто применяется для оптимизации производительности, чтобы не тратить ресурсы на создание объектов, которые могут не понадобиться.

Пример с lazy в Kotlin:

val heavyObject: HeavyClass by lazy {
    HeavyClass() // создастся только при первом обращении
}

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

  • Потокобезопасна по умолчанию
  • Инициализируется один раз
  • Можно задать мод (LazyThreadSafetyMode) для многопоточности

Альтернатива — ручная реализация через проверку null и synchronized, но lazy удобнее и безопаснее.