相关疑难解决方法(0)

如何使用泛型来处理函数的重载决策模糊性?

考虑这个有两个函数的类,一个带有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>,KInt,并且两个函数都匹配调用时,导致错误:

val m = C<Int, SomeType>()
m.f(1)
Run Code Online (Sandbox Code Playgroud)

过载分辨率模糊.所有这些功能都匹配:

  • public final fun f(index: Int): SomeType 定义于 C
  • public final fun f(key: Int): Pair<Int, SomeType>? 定义于 C

f在这种情况下,如何拨打我想要的电话?

generics ambiguous overload-resolution kotlin

9
推荐指数
1
解决办法
3085
查看次数

标签 统计

ambiguous ×1

generics ×1

kotlin ×1

overload-resolution ×1