当前位置: 首页 > 知识库问答 >
问题:

Kotlin和RxJava类型推断失败

欧阳俊逸
2023-03-14

我试图在我的Observable上实现retryWhen,但我在IDE Android Studio 3.0中有一些奇怪的错误

以下是代码:

rxRssiRepository.onRssiUpdate() //returns Observable<RssiEvent>
        .timeout(10, TimeUnit.MILLISECONDS)
        .retryWhen { t: Observable<Throwable> ->
            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在红色下划线上突出显示。平面图运算符并说:

类型推断失败:信息不足,无法推断中的参数R

有趣的平面图(映射器:((t:可抛出)→可观察源)!):可观察!请明确指定。

对于“if”操作符也是如此:

控制流表达式的类型推断失败。请显式指定其类型

接线员。只是:

类型推断失败:没有足够的信息来推断参数T(项:T!):看得见!请明确说明。

接线员。空的:

类型推断失败:信息不足,无法推断中的参数T

有趣的只是(项目:T!):看得见!请明确说明。

而且是为了。错误运算符:

类型推断失败:信息不足,无法推断中的参数T

有趣的错误(例外:可抛!):可观察!请明确指定。

如何解决这个问题?

我的意思是,Java中也有这样的代码:如何添加一个超时来检测一个可观察对象有一段时间没有发出信号

但当我把它转换成类似于科特林的形式时,它给了我所描述的情况问题

共有1个答案

斜高翰
2023-03-14

编译器无法确定您要返回的类型。

在您的情况下,最简单的修复方法是在返回类型中添加一个类型。像这样的是可以观察到的。只是(可观察到的)

 类似资料:
  • 我使用一个密封类从网络返回数据。但是当我在构建这个项目时,我得到了以下错误 类型推断失败:没有足够的信息来推断参数T in fun error(错误消息:String,错误:Throwable):状态请明确指定它。 我错过了什么? 这是代码

  • 我正在尝试编写一个android静态编程语言应用程序,但我得到了以下错误。我哪里出错了? 这是我如何声明我的HashMap: 错误: 类型推断失败。没有足够的信息来推断构造函数HashMap中的参数K。请明确说明

  • 我需要 Kotlin 中的一个集合来仅包含实现给定接口的元素。 例如:包含动物集合的地图: 通过阅读文档、博客和SO问题,我编写了使用Generics in关键字的代码: 现在我想在Test类中添加一个读取“data”内容的方法,例如将其打印到控制台: 如果我这样做,我会遇到编译错误: 我的解决方案是强制我的动物进入一个ArrayList 但是我不确定这是编写这种代码的最好方式。有没有更好的方式告

  • 当用户确认付款时,我尝试在Paypal Sdk上获取交易详细信息。但是,下面的代码遇到了问题 遇到的问题: 类型推断失败:信息不足,无法推断中的参数T 享乐 对于此行:val confirm=data。getParcelableExtra(PaymentActivity.EXTRA_结果_确认) 不确定这对字符串(4)意味着什么: val paymentDetails=confirm。toJSON

  • 主要内容:1 Java8 类型推断的介绍,2 Java8 类型推断的案例1,3 Java8 类型推断的案例21 Java8 类型推断的介绍 类型推断是Java的一项功能,它使编译器可以查看每个方法调用和相应的声明以确定参数的类型。 Java在Java 8中提供了类型推断的改进版本。 1.1 Java8以前 在下面的声明中,我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里,您可以将第二面留为<>,并且编译器将通过引用变量的类型来推断其类型。 1.2 Java8以后