Sobes.tech
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").