在阅读有关RXJAVA的书时,出现此错误:
类型推断失败。预期类型不匹配:推断的类型为 可观察!但可以观察到
通过以下简单代码段:
@Test
fun deferable() {
val source= Observable.range(1, 5)
source.subscribe { s -> System.out.println("RECEIVED: $s "}
}
我不明白,我为什么在运行测试时会收到此奇怪的消息。在日常活动中,我会管理此类错误,更改变量/属性(表达式类型)的返回值
为val source :Observable<Int>
但不起作用,我也尝试做map{it.toString()}
但是没有成功,我如何才能使“测试”通过?我知道这不是一个真正的测试,我仅用于学习RXJAVA,所以没有断言,我期望的是看到以下输出:
RECEIVED:5
RECEIVED:6
RECEIVED:7
RECEIVED:8
RECEIVED:9
RECEIVED:10
RECEIVED:11
RECEIVED:12
RECEIVED:13
RECEIVED:14
答案 0 :(得分:1)
类型推断失败。预期类型不匹配:推断的类型是可观察的!但可以观察到
如果您遇到此类编译器错误,则意味着您正尝试传递可为空的值,而不是nonNull。您看到尖叫声:Observable!
的标志吗?就是这个
PS。测试在我的计算机上是绿色的。输出是下一个:
RECEIVED: 1
RECEIVED: 2
RECEIVED: 3
RECEIVED: 4
RECEIVED: 5