在RxJava2中无法解决“subscribe(anonymous io.reactivex.functionx.Consumer<java.util.List<...>>)”方法?

5

在 toList 操作执行之后,原始的 Flowable<<\List>> 转换为 Single<<\List>>。如果我创建一个 Consumer 订阅 Single,那么 Consumer 的值类型除了 Object 以外就无法改变了吗?

 @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<BannerBeanList.BannerBean>гҖӮжҲ‘дјҡж¶ҰиүІзҝ»иҜ‘并дҝқжҢҒеҺҹж„ҸпјҢдёҚдјҡж·»еҠ и§ЈйҮҠжҲ–е…¶д»–еҶ…е®№гҖӮ - akarnokd
@akarnokd 谢谢,我应该指定即将发布的元素类型。 - Qin
1个回答

6
从我的评论中可以看到:这是因为你的代码使用了 Publisher<?> 而不是 Publisher<BannerBeanList.BannerBean>。通常情况下,IDE 无法推断 Lambda 表达式或函数接口的类型,当你使用某些生成/转换重构函数时,它们的类型会变成 ? 或 Object。

你有出版商而不是发布者的意思是什么? - minhaz
已更新答案,类型参数<>未被转义。 - akarnokd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接