从 rxjava retrolambda 表达式转换为经典

Convert from rxjava retrolambda expression to classic

我使用retrolambda表达式

 _rxBus = getRxBusSingleton();
    _disposables = new CompositeDisposable();

    ConnectableFlowable<Object> tapEventEmitter = _rxBus.asFlowable().publish();

    _disposables
            .add(tapEventEmitter.subscribe(event -> {

             if (event instanceof EmployeeMvvmActivity.TapEvent) {
                _showTapText();
            }

            }));

一切正常。由于 Roboelectric 测试,我需要将 retrolambda 表达式转换为经典表达式。我试过了

_disposables.add(tapEventEmitter.subscribe(new Action1<Object>() {
        @Override
        public void call(Object event) {
            if (event instanceof EmployeeMvvmActivity.TapEvent) {
                _showTapText();
            }
        }
    }));

我遇到无法解析方法的错误 'subscribe(anonymous rx.functions.Action1(java.lang.object)'。

当您使用 Rx2 时,Action1 来自 Rx1。相反,您必须使用 Consumer 界面。

_disposables.add(tapEventEmitter.subscribe(new Consumer<Object>() {
    @Override
    public void accept(Object event) {
        if (event instanceof EmployeeMvvmActivity.TapEvent) {
            _showTapText();
        }
    }
}));