Kotlin和RxJavatypes推断失败
我试图执行重试当我的Observable时,会出现一个时间,但我有奇怪的错误下划线在IDE Android Studio 3.0
这里是代码:
rxRssiRepository.onRssiUpdate() //returns Observable .timeout(10, TimeUnit.MILLISECONDS) .retryWhen { t: Observable -> t.flatMap { error: Throwable -> if (error is TimeoutException) { stopLocationUpdates() Log.v("TIMEOUT", "TIMEOUT RSSI EVENTS") Observable.just(Observable.empty()) } else { Observable.error(error) } } } .concatMap { t: RssiEvent -> appendRssiEvent(t) } .publish()
IDE强调了.flatMap运算符的红色,并说:
types推断失败:没有足够的信息来推断参数R in
fun flatMap(mapper:((t:Throwable)→ObservableSource)!):Observable! 请明确指定。
“if”运算符也是如此:
控制流expression式的types推断失败。 请明确指定其types
对于运营商.just:
types推断失败:没有足够的信息来推断参数T只是乐趣(item:T!):Observable! 请明确指定。
对于运算符.empty:
types推断失败:没有足够的信息来推断参数T in
好玩(item:T!):可观察! 请明确指定。
对于错误操作符:
types推断失败:没有足够的信息来推断参数T in
有趣的错误(例外:Throwable!):可观察! 请明确指定。
如何解决这个问题?
我的意思是,这个代码也在Java中: 如何添加一个超时来检测一个Observable没有发出一段时间
但是,当我把它转换成Kotlin,它给了我描述的情况问题
编译器无法弄清楚你想返回什么types。
在你的情况最简单的修复将是添加你的返回types的types。 像这样Observable.just(Observable.empty
。 现在编译器将能够找出返回的types。