Что такое Multibinding

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

Ответ

Multibinding в Dagger позволяет объединять несколько зависимостей одного типа в коллекцию (Set, Map или List) для инъекции. Полезно, когда нужно предоставить несколько реализаций интерфейса.

Пример с @IntoSet:

@Module
class AppModule {
    @Provides
    @IntoSet
    fun provideString1(): String = "Hello"

    @Provides
    @IntoSet
    fun provideString2(): String = "World"
}

class MyClass @Inject constructor(
    private val strings: Set<String> // ["Hello", "World"]
)

Также есть @ElementsIntoSet для коллекций и @IntoMap с ключами. Multibinding упрощает добавление зависимостей без изменения кода потребителя.