我有以下扩展功能:
import io.reactivex.Notification
import io.reactivex.Observable
import io.reactivex.subjects.Subject
fun <T> Subject<Notification<T>>.fromNotifications(): Observable<T> {
return compose {
it.takeUntil { event ->
!event.isOnNext
}.flatMap { event ->
when {
event.isOnError -> Observable.error(event.error)
event.isOnNext -> Observable.just(event.value)
else -> Observable.empty()
}
}
}
}
我用它来将Subject
带有Notification
值的 a 转换为普通的Observable
。
我不太明白为什么我会收到错误
Type inference failed. Expected type mismatch: inferred type is Observable<T?>! but Observable<T> was expected
从哪里来inferred type is Observable<T?>
?我想这与在 Java 中可空类型和不可空类型之间没有区别这一事实有关。
有哪些方法可以解决这个问题?