Сколько раз создается Dagger Lazy

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

Ответ

Lazy<T> в Dagger создается один раз для каждого инжектируемого поля. При первом вызове get() происходит инициализация объекта, а последующие вызовы возвращают кэшированный экземпляр. Это ленивая инициализация, но сам Lazy создается при инжекции.

Пример:

class MyClass {
    @Inject lateinit var lazyDep: Lazy<HeavyDependency>

    fun useDependency() {
        val dep = lazyDep.get() // инициализация при первом вызове
    }
}