无法解决方法&#39; subscribe(匿名io.reactivex.functionx.Consumer <java.util.list <...>&gt;)&#39;在rxjava2?

时间:2016-11-22 10:50:02

标签: rx-java2

在toList运算符执行之后

,原始Flowable&lt;&lt; \ List&gt;&gt;转换为Single&lt;&lt; \ List&gt;&gt;。事实证明,如果我创建Consumer来订阅Single, 除了Object之外,不能更改Consumer值类型?

 @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);
                }
            });
          *****************************************************************************/
}

1 个答案:

答案 0 :(得分:5)

从我的评论中:发生这种情况是因为您的代码中有Publisher<?>而不是Publisher<BannerBeanList.BannerBean>。通常,IDE无法推断lambda或功能接口的类型,你最终会得到什么?或使用某些生成/转换重构函数时对象作为其类型。