Когда стоит использовать Inject constructor в Dagger

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

Ответ

Использование @Inject constructor в Dagger уместно, когда:

  1. Класс находится под твоим контролем (не из сторонней библиотеки).
  2. Нужен простой способ внедрения зависимостей без лишних модулей.
  3. Зависимость может быть создана через конструктор (нет сложной логики инициализации).

Пример:

class UserRepository @Inject constructor(
    private val apiService: ApiService,
    private val cache: UserCache
) { ... }

Когда НЕ использовать:

  • Для классов из сторонних библиотек (лучше @Module + @Provides).
  • Если нужен кастомный способ создания объекта (например, с параметрами).
  • Для интерфейсов (требует привязки через @Binds).