Выбор ответа Middle DI: Hilt и Koin обновлено

@Binds и @Provides

Вопрос

Когда в Hilt использовать @Binds вместо @Provides?

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

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

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

Коротко

Правильный ответ: Чтобы связать интерфейс с реализацией, у которой есть @Inject constructor. @Binds это абстрактный метод «интерфейс → реализация», Dagger просто использует уже существующий способ создать реализацию и генерирует меньше кода. @Provides нужен, когда объект надо создать вручную: Retrofit.Builder()...,…

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

  1. Чтобы связать интерфейс с реализацией, у которой есть @Inject constructorправильный ответ
  2. Когда объект создаётся билдером стороннего класса, например Retrofit.Builder
  3. Когда нужен синглтон: @Provides не поддерживает аннотацию @Singleton
  4. Никогда: @Binds устарел в Hilt 2.x, и вместо него везде пишут @Provides

Разбор

@Binds это абстрактный метод «интерфейс → реализация», Dagger просто использует уже существующий способ создать реализацию и генерирует меньше кода. @Provides нужен, когда объект надо создать вручную: Retrofit.Builder()..., Room.databaseBuilder. Скоуп задаётся отдельно аннотацией и работает с обоими. @Binds не устарел.

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

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