Sobes.tech
Junior — Middle

É possível implementar no Dagger dois métodos num mesmo módulo que retornem o mesmo tipo de objeto?

sobes.tech IA

Resposta da IA

No Dagger, não é possível simplesmente declarar dois métodos num mesmo módulo que retornem o mesmo tipo de objeto sem uma qualificação adicional, pois isso levaria a um conflito na resolução da dependência. Para implementar tal situação, deve-se usar as anotações @Qualifier ou @Named para distinguir essas dependências. Por exemplo:

@Module
public class MyModule {
    @Provides
    @Named("typeA")
    MyObject provideMyObjectA() {
        return new MyObject("A");
    }

    @Provides
    @Named("typeB")
    MyObject provideMyObjectB() {
        return new MyObject("B");
    }
}

Dessa forma, na injeção, pode-se indicar a opção desejada usando @Named("typeA") ou @Named("typeB").