Lambda表达式中预期的对象的参数类型不兼容,但发现布尔

时间:2019-03-15 13:44:51

标签: java lambda java-8 rx-java2

我正在尝试在switchMap回调中实现lambda表达式,但它抱怨参数类型,但我一直无法弄清原因。

public class Notifier {

  public ReplaySubject emitter = ReplaySubject.create();

  private PublishSubject status = PublishSubject.create();
  private Observable<Long> interval$;
  private Disposable notificationSubscription;

  public Notifier() {

    interval$ = Observable
      .interval(5000, TimeUnit.MILLISECONDS)
      .concatMap((i) -> {

        Observable nextNotification$ = interval$
          .share()
          .take(1);

        //noinspection unchecked
        return status
          .startWith(new Boolean(true))
          .switchMap((Boolean value) -> {

            if (!value.booleanValue()) {
              return Observable.empty();
            }

            return Observable.timer(1000, TimeUnit.MILLISECONDS).zip(nextNotification$, (val) -> i);
          });
      });

    notificationSubscription = interval$.subscribe(this::newNotification);
  }
}

抱怨的是.switchMap((Boolean value) -> { ... }行。

我也尝试使用Consumer,但后来我遇到了其他更糟糕的问题。

如何调整此功能以使其按预期工作?

0 个答案:

没有答案