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

Type inference failed Kotlin rxjava map use

正在尝试添加 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)
    )
    }

但是,我收到以下错误:

类型推断失败:fun map(p0: Function!):可观察! 不能应用于 ()
类型不匹配:推断类型只是函数!预计
接口函数需要一个类型参数

我希望它像这样简单:

.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