Sobes.tech
Junior — Middle

È possibile implementare in Dagger due metodi in un modulo che restituiscono lo stesso tipo di oggetto?

sobes.tech AI

Risposta dell'AI

In Dagger, non è possibile semplicemente dichiarare due metodi in un modulo che restituiscono lo stesso tipo di oggetto senza una qualificazione aggiuntiva, poiché ciò porterebbe a un conflitto durante la risoluzione della dipendenza. Per implementare una tale situazione, è necessario utilizzare le annotazioni @Qualifier o @Named per distinguere queste dipendenze. Ad esempio:

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

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

In questo modo, durante l'iniezione, si può specificare la variante desiderata usando @Named("typeA") o @Named("typeB").