我有一个流,我正在观察用户选择的业务。如果没有选择任何业务,它应该发出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)
如果没有找到具有指定ID的商家,则返回带有#1的Business
的{{1}}或businessId
如果#1或#2发出null
,我希望整个方法一次发出null
。
显然,当#1或#2发出空值时,此代码将抛出null
。我可以使用null检查丢弃上面的代码并发出null,但这会使它非常难看。有没有办法只用RxJava捕获NullPointer异常?我可以使用NullPointerException
来阻止发出空值,但是当没有选择任何业务时我仍然想要发出.filter()
。
这里的最佳做法是什么?
答案 0 :(得分:1)
三元表达似乎是最好的选择,尽管仍然有点难看。
@Override
public Observable<Business> observeSelected() {
return selectedDb.observe()
.flatMap(businessId -> businessId != null ? observe(businessId) : Observable.just(null));
}