我有一个流,我正在观察用户选择的业务。当不选择业务时,它应该释放null
。这是一个热点可观察对象,所以它不应该终止。
@Override
public Observable<Business> observeSelected() {
return selectedDb.observe()
.flatMap(businessId -> observe(businessId);
}
这里有两个重要的方法调用
-
Observable<String> selectedDb.observe()
返回所选业务的String businessId
,如果不选择业务则返回null
。
-
Observable<Business> observe(String businessId)
返回Business
和#1的businessId
,如果没有找到具有指定ID的业务,则返回null
如果#1或#2发出null
,我希望整个方法只发出一次null
。
显然,当#1或#2发出null时,这段代码将抛出NullPointerException
。我可以在上面的代码中随意添加null检查并发出null,但这会使它变得非常难看。是否有一种方法来捕获只有NullPointer异常与RxJava?我可以使用.filter()
来防止发出null,但是我仍然希望在没有选择业务时发出onNext(null)
。
这里的最佳实践是什么?
三元表达式似乎是最好的选择,尽管仍然有点难看。
@Override
public Observable<Business> observeSelected() {
return selectedDb.observe()
.flatMap(businessId -> businessId != null ? observe(businessId) : Observable.just(null));
}