gpt4 book ai didi

在 Flowable 中使用方法引用时,Kotlin 无法推断类型

转载 作者:行者123 更新时间:2023-12-01 13:31:47 24 4
gpt4 key购买 nike

我在 Java 中有这段代码:

Flowable.just(1,2,3)
.flatMap(Flowable::just);

Kotlin 中的这段代码:

Flowable.just(1,2,3)
.flatMap(Flowable::just)

虽然 Java 代码编译正常,但 Kotlin 编译器说:“错误:(47, 30) Kotlin:类 Flowable 需要一个类型参数:io.reactivex 中定义的发布者”

但是这样编译很好:

Flowable.just(1,2,3)
.flatMap { Flowable.just(it) }

我哪里做错了,或者 Kotlin 为什么不能自动推断 Flowable 的类型?

最佳答案

这不是一个完整的答案,但对于评论来说太长了。

在无法编译的第一种情况下,错误与 Kotlin 没有选择正确的 Flowable::just 方法传递给 Flowable.flatMap(...)< 有关。定义了 10 种不同的 Flowable.just(...) 方法,区别在于参数的数量。

在第二种情况下,您向 Flowable.flatMap() 传递了一个显式调用 Flowable.just() 的单参数版本的 lambda(即,参数版本)。

在第一种情况下,Kotlin 显然选择了其他十种 Flowable::just 方法中的一种,而不是寻找与 Flowable.flatMap() (其中定义了 12 个)。相比之下,Java 能够(从参数的签名)推断出要传递 .just() 的许多重载中的哪一个。

这可能是 Kotlin 的一个缺点,但我想听听一位 Kotlin 编译器专家是怎么说的。

关于在 Flowable 中使用方法引用时,Kotlin 无法推断类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com