Судя по комментариям, в этом нет необходимости, но, учитывая заданный вопрос, возможно, это поможет.Вот как это может выглядеть:
@Named("Api")
@Binds
abstract WidgetStatisticRepository
widgetStatisticApiRepository(WidgetStatisticApiRepositoryImpl apiRepository);
@Named("Cache")
@Binds
abstract WidgetStatisticRepository
widgetStatisticCacheRepository(WidgetStatisticCacheRepositoryImpl cacheRepository);
Затем вы можете просто добавить аннотацию @Inject в конструктор WidgetPresenterImpl (при условии, что у вас есть метод @Provides, возвращающий Context):
@Inject
public WidgetPresenterImpl(WidgetSettingInteractor stateInteractor,
@Named("Api") WidgetStatisticInteractor statisticApiInteractor,
@Named("Cache") WidgetStatisticInteractor statisticCacheInteractor,
Context context) {
mStateInteractor = stateInteractor;
mStatisticApiInteractor = statisticApiInteractor;
mStatisticCacheInteractor = statisticCacheInteractor;
mContext = context;
}
или предполагая, что вы хотите абстрагировать реализацию интерфейса WidgetPresenter, вы можете создать соответствующий метод @Provides в неабстрактном модуле:
@Module
class WidgetPresenterModule {
@Provides
public WidgetPresenter provideWidgetPresenter(WidgetSettingInteractor stateInteractor,
@Named("Api") WidgetStatisticInteractor statisticApiInteractor,
@Named("Cache") WidgetStatisticInteractor statisticCacheInteractor,
Context context) {
return new WidgetPresenterImpl(stateInteractor, statisticApiInteractor, statisticCacheInteractor, context);
}
}