В какой момент Kotlin object инициализируется

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

Ответ

Объекты Kotlin (object) инициализируются лениво (lazy) при первом доступе. Это происходит:

  1. При первом обращении к любому члену объекта (методу или свойству).
  2. Потокобезопасно – гарантируется единственная инициализация даже в многопоточной среде.

Пример:

object Singleton {
    init { println("Initialized") }
    fun doWork() = println("Working")
}

// При первом вызове:
Singleton.doWork() // Выведет "Initialized", затем "Working"

Если объект объявлен внутри класса (companion object), инициализация происходит при первом доступе к нему или к внешнему классу.