Completable.andThen 结果 "other is null"
Completable.andThen results in "other is null"
我有以下代码:
fun edit(note: Note): Completable = getValidationCompletable(note).andThen(repository.insertOrUpdate(note))
private fun getValidationCompletable(note: Note): Completable {
return if (!note.isValidForEdit()) {
Completable.error(IllegalArgumentException("note failed validation before edit"))
} else {
Completable.complete()
}
}
在 note.isValidForEdit()
returns 为假的情况下,我得到以下信息:
java.lang.NullPointerException: other is null
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.Completable.concatWith(Completable.java:1040)
at io.reactivex.Completable.andThen(Completable.java:908)
任何人都可以阐明这一点吗?
这似乎已经解决,但只是为了解决未解决的问题,concatWith
(在本例中为repository.insertOrUpdate(note)
)的参数不能为空。
有趣的是,ReactiveX 似乎有它自己的 ObjectHelper.requireNonNull
函数,但是 没有 使用任何类型的 NotNull
注释来注释参数,所以Kotlin
编译器无法在编译时检查可空性。
可能值得在问题中提出这个建议。
我有以下代码:
fun edit(note: Note): Completable = getValidationCompletable(note).andThen(repository.insertOrUpdate(note))
private fun getValidationCompletable(note: Note): Completable {
return if (!note.isValidForEdit()) {
Completable.error(IllegalArgumentException("note failed validation before edit"))
} else {
Completable.complete()
}
}
在 note.isValidForEdit()
returns 为假的情况下,我得到以下信息:
java.lang.NullPointerException: other is null
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.Completable.concatWith(Completable.java:1040)
at io.reactivex.Completable.andThen(Completable.java:908)
任何人都可以阐明这一点吗?
这似乎已经解决,但只是为了解决未解决的问题,concatWith
(在本例中为repository.insertOrUpdate(note)
)的参数不能为空。
有趣的是,ReactiveX 似乎有它自己的 ObjectHelper.requireNonNull
函数,但是 没有 使用任何类型的 NotNull
注释来注释参数,所以Kotlin
编译器无法在编译时检查可空性。
可能值得在问题中提出这个建议。