Junior — Middle
Czy można zaimplementować w Dagger dwa metody w tym samym module, zwracające ten sam typ obiektu?
sobes.tech AI
Odpowiedź od AI
W Daggerze nie można po prostu zadeklarować dwóch metod w tym samym module, które zwracają ten sam typ obiektu bez dodatkowej kwalifikacji, ponieważ spowodowałoby to konflikt podczas rozwiązywania zależności. Aby zaimplementować taką sytuację, należy użyć adnotacji @Qualifier lub @Named, aby odróżnić te zależności. Na przykład:
@Module
public class MyModule {
@Provides
@Named("typeA")
MyObject provideMyObjectA() {
return new MyObject("A");
}
@Provides
@Named("typeB")
MyObject provideMyObjectB() {
return new MyObject("B");
}
}
W ten sposób, podczas wstrzykiwania, można wskazać odpowiednią wersję za pomocą @Named("typeA") lub @Named("typeB").