5

toList 演算子の実行後、元の Flowable<<\List>> は Single<<\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);
                }
            });
          *****************************************************************************/
}
4

1 に答える 1

6

私のコメントから:これは、コードPublisher<?>に代わりにあるために発生Publisher<BannerBeanList.BannerBean>します。多くの場合、IDE はラムダや関数型インターフェイスの型を推測できず、最終的に ? になります。または、生成/変換リファクタリング関数を使用する場合のタイプとしてのオブジェクト。

于 2016-11-26T18:46:15.367 に答える