我正在尝试在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
,但后来我遇到了其他更糟糕的问题。
如何调整此功能以使其按预期工作?