这个 lambda 方法的扩展代码是什么?
What is the expanded code from this lambda method?
我正在尝试使用 Rx2Animations 库,但它在其示例中使用了 Lambda 变量。所以,我不太清楚如何在常规代码中扩展该 lambda。
例子:
package oxim.digital.rx2animations.colorpicker;
import java.util.concurrent.TimeUnit;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
public final class ColorPickerPresenter extends BasePresenter<ColorPickerContract.View> implements ColorPickerContract.Presenter {
@Override
public void refreshView() {
final ColorPickerContract.View view = getNullableView();
if (view == null) {
return;
}
final Disposable animationDisposable = view.setupInitialAnimation()
.delay(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.concatWith(view.startInitialAnimation())
.subscribe(this::onAnimationEnd, Throwable::printStackTrace);
addSubscription(animationDisposable);
}
private void onAnimationEnd() {
}
}
subscribe 方法内部出现 lambda。
谢谢
第一个 lambda 是 onNext()
处理程序,this::onAnimationEnd()
是执行 onAnimationEnd
方法的方法引用,这里有编译错误,因为 onNext 发出一些对象,所以该方法应该有匹配参数:
private void onAnimationEnd(EmittedObject o)
(在此示例代码中它是 EmittedObject
但它应该是您的 Observable
发出的实际对象类型)。
第二个 lambda 参数是 onError()
通知处理程序,它也是方法引用,这次是 Throwable.printStackTrace()
方法。
一般来说,IDE(Android工作室)是你最好的朋友,你可以让它根据你选择的签名自动生成你的代码)
final Disposable animationDisposable = view.setupInitialAnimation()
.delay(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.concatWith(view.startInitialAnimation())
.subscribe(new Consumer<EmittedObject>() {
@Override
public void accept(@NonNull EmittedObject o) throws Exception {
onAnimationEnd(o);
}
}, new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable throwable) throws Exception {
throwable.printStackTrace();
}
});
我正在尝试使用 Rx2Animations 库,但它在其示例中使用了 Lambda 变量。所以,我不太清楚如何在常规代码中扩展该 lambda。
例子:
package oxim.digital.rx2animations.colorpicker;
import java.util.concurrent.TimeUnit;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
public final class ColorPickerPresenter extends BasePresenter<ColorPickerContract.View> implements ColorPickerContract.Presenter {
@Override
public void refreshView() {
final ColorPickerContract.View view = getNullableView();
if (view == null) {
return;
}
final Disposable animationDisposable = view.setupInitialAnimation()
.delay(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.concatWith(view.startInitialAnimation())
.subscribe(this::onAnimationEnd, Throwable::printStackTrace);
addSubscription(animationDisposable);
}
private void onAnimationEnd() {
}
}
subscribe 方法内部出现 lambda。
谢谢
第一个 lambda 是 onNext()
处理程序,this::onAnimationEnd()
是执行 onAnimationEnd
方法的方法引用,这里有编译错误,因为 onNext 发出一些对象,所以该方法应该有匹配参数:
private void onAnimationEnd(EmittedObject o)
(在此示例代码中它是 EmittedObject
但它应该是您的 Observable
发出的实际对象类型)。
第二个 lambda 参数是 onError()
通知处理程序,它也是方法引用,这次是 Throwable.printStackTrace()
方法。
一般来说,IDE(Android工作室)是你最好的朋友,你可以让它根据你选择的签名自动生成你的代码)
final Disposable animationDisposable = view.setupInitialAnimation()
.delay(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.concatWith(view.startInitialAnimation())
.subscribe(new Consumer<EmittedObject>() {
@Override
public void accept(@NonNull EmittedObject o) throws Exception {
onAnimationEnd(o);
}
}, new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable throwable) throws Exception {
throwable.printStackTrace();
}
});