这个 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();
                }
            });