Не удается разрешить метод «подписаться (анонимный io.reactivex.functionx.Consumer‹java.util.List‹››)» в rxjava2?

после выполнения оператора 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);
                }
            });
          *****************************************************************************/
}

person Qin    schedule 22.11.2016    source источник
comment
Это происходит потому, что в вашем коде есть Publisher<?> вместо Publisher<BannerBeanList.BannerBean>.   -  person akarnokd    schedule 23.11.2016
comment
@akarnokd спасибо, я должен указать тип элемента, который будет опубликован.   -  person Qin    schedule 23.11.2016


Ответы (1)


Из моего комментария: это происходит потому, что в вашем коде есть Publisher<?> вместо Publisher<BannerBeanList.BannerBean>. Часто IDE не могут вывести типы лямбда-выражений или функциональных интерфейсов, и в итоге вы получите ? или Object в качестве их типа при использовании некоторой функции рефакторинга generate/convert.

person akarnokd    schedule 26.11.2016
comment
что это означает, что у вас есть Publisher вместо Publisher - person minhaz; 01.05.2017
comment
Обновил ответ, аргумент типа <> не экранировался. - person akarnokd; 01.05.2017