Выбор ответа Senior Классы, data и sealed обновлено

Когда создаётся object-синглтон

Вопрос

Когда инициализируется object Analytics { ... } на JVM?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Лениво, при первом обращении, потокобезопасно. object компилируется в класс со статическим полем INSTANCE, которое заполняется при инициализации класса JVM.

Варианты ответа

  1. При старте приложения, вместе со всеми классами модуля
  2. При каждом обращении создаётся новый экземпляр
  3. Только после явного вызова Analytics.init()
  4. Лениво, при первом обращении, потокобезопасноправильный ответ

Разбор

object компилируется в класс со статическим полем INSTANCE, которое заполняется при инициализации класса JVM. Класс инициализируется при первом обращении, и JVM гарантирует, что это произойдёт один раз даже при гонке потоков. Поэтому синглтон ленивый и потокобезопасный без synchronized. Явного init() не нужно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.