如何通过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 -> {