2017-06-04 68 views
0

我用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(); 
      } 
     } 
    })); 

我有错误无法解析法“订阅(匿名rx.functions.Action1(java.lang.Object中)”。

+1

为什么你不能在你的测试使用retrolambda太目前尚不清楚。 – Logain

+0

通过使用retrolambda执行测试构建失败。发生在编译器(1.8例外。 0_101)。 – eurosecom

+1

Retrolambda也应该适用于您的测试,您可以在将代码移动到java7匿名类之前尝试修复该问题。 – Logain

回答

2

Action1当你使用Rx2的来自RX1 。相反,你必须使用Consumer接口。

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