Я пытаюсь сопоставить значения в Flowable типа Result с другим типом Result.В блоке карты я просто вызываю mapCatching для Result.Вместо того чтобы возвращать сопоставленное значение, он генерирует исключение ClassCastException.Я написал простой тест, чтобы проиллюстрировать мою проблему.
@Test
fun test() {
Flowable.just(Result.success(1))
.map { result ->
result.mapCatching { input -> input.toString() }
}
.test()
.values()
.forEach {
println(it)
}
}
Это возвращает следующее исключение:
java.lang.ClassCastException: kotlin.Result$Failure cannot be cast to kotlin.Result
Редактировать: замена метода mapCatching на мой собственный код отображениязаставляет Flowable завершаться с другим ClassCastException:
@Test
fun test() {
Flowable.just(Result.success(1))
.map { result ->
if (result.isFailure) {
return@map Result.failure<String>(result.exceptionOrNull()!!)
} else {
return@map Result.success(result.getOrNull()!!.toString())
}
}
.test()
.errors()
.forEach {
println(it)
}
}
Этот тест печатает следующее:
java.lang.ClassCastException: kotlin.Result cannot be cast to java.lang.Number