Sobes.tech
Junior — Middle

Lehet-e két módszert implementálni ugyanabban a modulban a Dagger-ben, amelyek ugyanazt az objektumtípust adják vissza?

sobes.tech MI

Válasz az MI-től

A Daggerben nem lehet egyszerűen két módszert deklarálni ugyanabban a modulban, amelyek ugyanazt a típusú objektumot adják vissza további kvalifikáció nélkül, mivel ez konfliktushoz vezetne a függőség feloldásakor. Egy ilyen helyzet megvalósításához használni kell az @Qualifier vagy @Named annotációkat, hogy megkülönböztessük ezeket a függőségeket. Például:

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

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

Így az injektálás során meg lehet adni a kívánt változatot a @Named("typeA") vagy a @Named("typeB") segítségével.