我不断得到表达式可以替换为Java 8的lambda。我该怎么做?这是我收到该消息的表达式之一:
Observable.create(new ObservableOnSubscribe<Pair>() {
@Override
public void subscribe(@io.reactivex.annotations.NonNull ObservableEmitter<Pair> observableEmitter) throws Exception { ...
任何想法?
答案 0 :(得分:2)
由于任何具有SAM
的接口本质上都是一个功能接口,因此我们可以这样做:
Observable.create(e -> { /* do logic */ });
请注意,如果在create
范围内发生任何异常,则上述方法不会冒泡异常。要使用lambdas(匿名函数)完成此类行为,您可以创建一个包装器方法并在那里执行逻辑,即:
public void subscribeWrapper(ObservableEmitter<Pair> e) throws java.lang.Exception {
// do logic
}
然后你会这样做:
Observable.create(e -> subscribeWrapper(e));
另一方面,您可以忽略创建所述方法并在lambda语句块中使用try/catch
并从那里重新抛出异常。
答案 1 :(得分:2)
这就是创建lambda的方法:
observableEmitter -> {
// your code here
}
您不需要匿名功能或类似的功能。
将它放在给定的代码中:
Observable.create(observableEmitter -> {
// your code here
});
您只需将new ObservableOnSubs...
位替换为lambda。