RxAndroid问题改造?

时间:2017-03-30 18:15:00

标签: java android casting rx-java rx-android

我在订阅方法中遇到了一个强制转换问题,我不知道为什么新的Observer会出现这个问题。

 Observable<GradeModel> getGrade = retrofit
                .create(GradeService.class)
                .getGrade()
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .map(model -> {
                    // transform model
                    DecimalFormat grades = (DecimalFormat) model.getGrades();
                    return grades;
                })
                .subscribe(new Subscriber<DecimalFormat>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i(TAG, "onError method of observer");
                    }

                    @Override
                    public void onNext(DecimalFormat grades) {
                        mainPresenter.setListGrades(grades);
                    }
                });
  

必需:   rx.Observable      实测:   rx.Subscription

1 个答案:

答案 0 :(得分:1)

直到.subscribe(...)Observable。但订阅后,它会返回一个Subscription实例,可用于取消订阅。

发生异常是因为您将此Subscription强制转换为Observable,尽管它们完全不相关。

在不知道你对该变量的意图的情况下,很难说出正确的代码是什么。