如何通过Java Lambda重写它?

此问题不同于“ Lambda表达式和通用方法”问题。问题是由于引发异常。

public Observable<String> getUserInfo() {
    return Observable.create(new ObservableOnSubscribe<String>() {
        @Override
        public void subscribe(ObservableEmitter<String> emitter) throws Exception {
            try {
                emitter.onNext( getPlayerInfo());
                emitter.onComplete();
            } catch (Exception e) {
                emitter.onError(e);
            }
        }
    }).subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread());
}


当我通过普通的Lambda重写此代码时,出现此错误:


  不兼容的类型:必需:可观察的。发现:
  可观察的。


这是我尝试的:

public Observable<String> getUserInfo() {
    return Observable.create( emitter -> {
            try {
                emitter.onNext(getPlayerInfo();
                emitter.onComplete();
            } catch (Exception e) {
                emitter.onError(e);
            }
        }).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}

最佳答案

编译器的推理引擎无法确定Observable的类型参数,因此您需要明确指定它:

return Observable.<String>create( emitter -> {

10-04 14:13