【发布时间】:2017-04-05 00:19:45
【问题描述】:
考虑这个类有两个函数,一个带有Int 参数,另一个带有一个通用函数:
class C<K, V> {
// ...
operator fun f(index: Int): Pair<K, V> = ...
operator fun f(key: K): V = ...
}
当参数化为C<Int, SomeType>时,K为Int,两个函数都匹配调用,导致报错:
val m = C<Int, SomeType>()
m.f(1)
重载分辨率不明确。所有这些功能都匹配:
public final fun f(index: Int): SomeType定义在Cpublic final fun f(key: Int): Pair<Int, SomeType>?定义在C
在这种情况下,我如何拨打我想要的f?
【问题讨论】:
标签: generics kotlin ambiguous overload-resolution