Выбор ответа Middle DI: Hilt и Koin обновлено
@Binds и @Provides
Вопрос
Когда в Hilt использовать @Binds вместо @Provides?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы связать интерфейс с реализацией, у которой есть @Inject constructor. @Binds это абстрактный метод «интерфейс → реализация», Dagger просто использует уже существующий способ создать реализацию и генерирует меньше кода. @Provides нужен, когда объект надо создать вручную: Retrofit.Builder()...,…
Варианты ответа
- Чтобы связать интерфейс с реализацией, у которой есть
@Inject constructorправильный ответ - Когда объект создаётся билдером стороннего класса, например
Retrofit.Builder - Когда нужен синглтон:
@Providesне поддерживает аннотацию@Singleton - Никогда:
@Bindsустарел в Hilt 2.x, и вместо него везде пишут@Provides
Разбор
@Binds это абстрактный метод «интерфейс → реализация», Dagger просто использует уже существующий способ создать реализацию и генерирует меньше кода. @Provides нужен, когда объект надо создать вручную: Retrofit.Builder()..., Room.databaseBuilder. Скоуп задаётся отдельно аннотацией и работает с обоими. @Binds не устарел.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.