类型推断失败Kotlin rxjava映射使用

时间:2018-11-15 12:26:49

标签: android kotlin rx-java rx-android

试图添加一个CompositeDisposable。使用以下代码:

 compositeDisposable.add(
        animalsObservable
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .filter { s -> s.toLowerCase().startsWith("c") }
            .map(object : Function<String, String>()
            {
                @Throws(Exception::class)
                fun apply(s: String): String
                {
                    return s.toUpperCase()
                }
            })
            .subscribeWith(animalsObserverAllCaps)
    )
    }

但是,出现以下错误:

类型推断失败:有趣的地图(p0:功能!):可观察! 不适用于 ()
类型不匹配:推断的类型为功能!被期待
接口函数

的一种类型参数

1 个答案:

答案 0 :(得分:1)

我希望它是如此简单:

.map { it.toUpperCase() }

代替

.map(object : Function<String, String>()
{
    @Throws(Exception::class)
    fun apply(s: String): String
    {
        return s.toUpperCase()
    }
})

但是无论如何,您可能都没有使用io.reactivex.functions.Function,因此出现了错误。如果您真的不想使用Lambda,则:

.map(object : io.reactivex.functions.Function<String, String> {
    override fun apply(t: String): String {
        return t.toUpperCase()
    }
})

或者仅导入io.reactivex.functions.Function,然后使用Function