考虑这个有两个函数的类,一个带有Int参数,另一个带有泛型函数:
class C<K, V> {
// ...
operator fun f(index: Int): Pair<K, V> = ...
operator fun f(key: K): V = ...
}
Run Code Online (Sandbox Code Playgroud)
当它被参数化为C<Int, SomeType>,K是Int,并且两个函数都匹配调用时,导致错误:
val m = C<Int, SomeType>()
m.f(1)
Run Code Online (Sandbox Code Playgroud)
过载分辨率模糊.所有这些功能都匹配:
public final fun f(index: Int): SomeType定义于Cpublic final fun f(key: Int): Pair<Int, SomeType>?定义于C
f在这种情况下,如何拨打我想要的电话?