Sobes.tech
Junior — Middle

Може ли да реализирате в Dagger два метода в един модул, които връщат един и същи тип обект?

sobes.tech AI

Отговор от AI

В Dagger не може просто да обявите два метода в един модул, които връщат един и същ тип обект без допълнителна квалификация, тъй като това ще доведе до конфликт при разрешаването на зависимостта. За реализиране на такава ситуация трябва да използвате анотациите @Qualifier или @Named, за да различавате тези зависимости. Например:

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

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

По този начин, при инжектиране, може да посочите желания вариант с помощта на @Named("typeA") или @Named("typeB").