5

在 toList 运算符执行后,原始 Flowable<<\List>> 转换为 Single<<\List>>。事实证明,如果我创建 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);
                }
            });
          *****************************************************************************/
}
4

1 回答 1

6

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

于 2016-11-26T18:46:15.367 回答