【发布时间】:2015-08-14 21:44:09
【问题描述】:
在 Kotlin 0.12.1230 中,已弃用的 API 似乎正在阻止使用它们的替代品。
例如,编译器抱怨以下 sn-p,因为它“无法在……未完成类型推断的候选者中进行选择”
val seq = sequenceOf("1")
val first = seq.firstOrNull()
候选人是Sequence<T>.firstOrNull 和Stream<T>.firstOrNull,两者具有相同的签名并且Sequence<T> 扩展Stream<T>。此外,Stream<T> 已被弃用,取而代之的是 Sequence<T>。
尝试解决类型推断歧义(如下所示)会导致编译器抱怨“重载解析歧义”。
val seq = sequenceOf("1")
val first = seq.firstOrNull<String?>()
在我们等待已弃用的 API 完全消失时,有什么办法可以解决歧义?
似乎转换为最不具体的类型,在这种情况下是弃用的类型Stream<T>,可以完成它,但现在我的代码显式地依赖于一个弃用的类型,而我不想这样做:
val seq = sequenceOf("1")
val first = (seq as Stream<String>).firstOrNull()
希望有更好的方法吗?
【问题讨论】:
标签: kotlin