第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Dagger-2:如何根據(jù)其范圍為同一對象類型創(chuàng)建不同的實例化?

Dagger-2:如何根據(jù)其范圍為同一對象類型創(chuàng)建不同的實例化?

偶然的你 2022-09-22 10:27:29
我有一個組件-子組件關(guān)系。每個都有不同的作用域,并使用自己的模塊,該模塊提供相同類型的缺陷。我需要的是基于范圍的不同對象實例化。Dagger不會允許這樣做,因為我將有“多個綁定”。如何在不@Named資格賽的情況下解決問題?例如,有沒有辦法覆蓋子組件?//Higher scoped object (in component)    @Provides    @ClientScope    ISupResRankStrategy iSupResRankStrategy(@Named("GlobalModelConfig") JsonNode configSubTree,            Lazy<SortByMagnitudeSum> strat1,            Lazy<SortByShadowPercentage> strat2) {        @SuppressWarnings("rawtypes")        Map<String, Lazy> availableStrategies = new HashMap<>();        availableStrategies.put(SortByMagnitudeSum.class.getSimpleName(), strat1);        availableStrategies.put(SortByShadowPercentage.class.getSimpleName(), strat2);        String configuredStrategy = configSubTree.findValue("ISupResRankStrategy").asText();        return (ISupResRankStrategy) availableStrategies.get(configuredStrategy).get();    }//lower scoped object (in subcomponent)@Provides@ModelScopeISupResRankStrategy iSupResRankStrategy(@Named("TradeModelConfig") JsonNode configSubTree,        Lazy<SortByMagnitudeSum> strat1,        Lazy<SortByShadowPercentage> strat2) {    @SuppressWarnings("rawtypes")    Map<String, Lazy> availableStrategies = new HashMap<>();    availableStrategies.put(SortByMagnitudeSum.class.getSimpleName(), strat1);    availableStrategies.put(SortByShadowPercentage.class.getSimpleName(), strat2);    String configuredStrategy = configSubTree.findValue("ISupResRankStrategy").asText();    return (ISupResRankStrategy) availableStrategies.get(configuredStrategy).get();}
查看完整描述

2 回答

?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

Dagger不會允許這樣做,因為我將有“多個綁定”。如何在不@Named資格賽的情況下解決問題?例如,有沒有辦法覆蓋子組件?

沒有。不能同時擁有 2 個具有不同作用域的相同類型的對象。匕首應(yīng)該如何知道你想要的2個中的哪一個?

要擁有多個相同類型的對象,您可以

  • 使用 ,是其中之一,但您可以使用更好的名稱創(chuàng)建自己的名稱,例如,@Qualifier@Named@Client@Model

  • 使用組件依賴項而不是子組件,這樣您就不能將對象公開給依賴組件,從而允許它們自己的實例


查看完整回答
反對 回復(fù) 2022-09-22
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

使用@Qualifier,@Named。你可以重載 DI


例如


 @Provides @Named("type1") 

  Model provideModel() {

  return new Model();

  }


 @Provides @Named("type2") 

 Model provideModeWithContext(Context context) {

 return new Model(context);

   }


查看完整回答
反對 回復(fù) 2022-09-22
  • 2 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號