2016-11-22 55 views
4

toList操作員執行後,原始流水< < \ List >>轉換爲單個< < \ List >>。事實證明,如果我創建消費者訂閱單, 消費者的價值類型不能改變除了對象?在rxjava2中無法解析方法'subscribe(anonymous io.reactivex.functionx.Consumer <java.util.List <...>>)'?

@Override 
public void loadBannerData(final ADFilterType adFilterType) { 
    remoteListDataSource.getBannerListData(adFilterType) 
      .flatMap(new Function<List<BannerBeanList.BannerBean>, Publisher<?>>() { 
       @Override 
       public Publisher<?> apply(List<BannerBeanList.BannerBean> bannerBeen) throws Exception { 
        return Flowable.fromIterable(bannerBeen); 
       } 
      }) 
      .toList() 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      /******************************Consume Value Type************************** 
      .subscribe(new Consumer<List<BannerBeanList.BannerBean>>() { 
       @Override 
       public void accept(List<BannerBeanList.BannerBean> bannerBeens) throws Exception { 
        mainTabView.showMainBanner(bannerBeens); 
       } 
      }); 
      *****************************************************************************/ 
} 
+3

發生這種情況是因爲您的代碼中有'Publisher '而不是'Publisher '。 – akarnokd

+0

@akarnokd謝謝,我應該指定即將發佈的元素的類型。 – Qin

回答

5

從我的評論:這是因爲你有Publisher<?>,而不是Publisher<BannerBeanList.BannerBean>在你的代碼。通常,IDE不能推斷lambda表達式或函數接口的類型,你最終會得到?或者使用一些生成/轉換重構函數的對象作爲它們的類型。

+0

這意味着什麼「你有出版商而不是出版商」 – minhaz

+0

更新了答案,類型論證'<>'沒有逃脫。 – akarnokd

相關問題