在下面的代码中,我想确认或断言映射运算符返回的对象或发射不为空,或者如果为空 - 应该返回 empty()。 请让我知道它是否正确..
Activity
companion object {
fun create(): Maybe<WikiApiService>? {
return Single.just(
Retrofit.Builder()
.addCallAdapterFactory(
RxJava2CallAdapterFactory.create()
)
.addConverterFactory(
GsonConverterFactory.create()
)
.baseUrl("https://en.wikipedia.org/w/")
.build()
)
.map { retrofit -> retrofit.create(WikiApiService::class.java) }
.toMaybe()
//.toObservable()
}
}
最佳答案
RxJava 不允许流中有空值,因此如果 map
返回空值,流将因错误事件而终止。
您可以将 map
替换为 flatMapMaybe
并返回 Maybe.just(service)
或 Maybe.empty ()
如果值为 null。然后,您可以在 subscribe
回调中断言结果是否成功,其中 onSuccess
表示该值不为 null,onComplete
表示该值为空。
两个附加说明。您返回的 maybe 不必声明为 nullable,因为该信息将在 Maybe 本身中捕获。但是,我不确定您是否需要处理这种 null 情况,因为据我所知,retrofit.create
一开始就不应该返回 null。
关于android - 如何使用 Maybe 运算符检查可空性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56959188/