Что такое Qualifier в Dagger

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

Ответ

Qualifier в Dagger — это аннотация, позволяющая различать зависимости одного типа. Используется, когда нужно предоставить разные реализации для одного интерфейса/класса.

Пример:

@Qualifier
annotation class NetworkApi

@Qualifier
annotation class MockApi

@Module
class AppModule {
    @NetworkApi
    @Provides
    fun provideNetworkApi(): Api = NetworkApiImpl()

    @MockApi
    @Provides
    fun provideMockApi(): Api = MockApiImpl()
}

class MyViewModel @Inject constructor(
    @NetworkApi private val api: Api
)

Без Qualifier Dagger не поймёт, какую именно реализацию Api нужно внедрить. Qualifier помогает устранить эту неоднозначность.