无法解析 rxjava2 中的方法 'subscribe(anonymous io.reactivex.functionx.Consumer<java.util.List<...>>)'?
Cannot resolve method 'subscribe(anonymous io.reactivex.functionx.Consumer<java.util.List<...>>)' in rxjava2?
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);
}
});
*****************************************************************************/
}
根据我的评论:发生这种情况是因为您的代码中有 Publisher<?>
而不是 Publisher<BannerBeanList.BannerBean>
。通常 IDE 无法推断 lambda 或函数式接口的类型,您最终会得到 ?或 Object 在使用一些 generate/convert 重构函数时作为它们的类型。
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);
}
});
*****************************************************************************/
}
根据我的评论:发生这种情况是因为您的代码中有 Publisher<?>
而不是 Publisher<BannerBeanList.BannerBean>
。通常 IDE 无法推断 lambda 或函数式接口的类型,您最终会得到 ?或 Object 在使用一些 generate/convert 重构函数时作为它们的类型。