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.