gpt4 book ai didi

泛型类型绑定(bind)到 Any 时的 kotlin 重载解析歧义

转载 作者:行者123 更新时间:2023-12-03 20:47:51 25 4
gpt4 key购买 nike

考虑this code :

fun main() {
class A<T> {
fun m(t: T): Unit {
print("T")
}
fun m(t: List<T>): Unit {
print("List<T>")
}
}

val a: A<Any> = A()
val l: List<Any> = listOf()
a.m(l)
}
a.m(l) call 似乎与以下错误模棱两可:

Overload resolution ambiguity: public final fun m(t: Any): Unit defined in main.A public final fun m(t: List<Any>): Unit defined in main.A


我的直觉告诉我 m(t: List<T>)过载应该更具体,但我的直觉过去已经错了一次, when I had a similar case in Java .
我可以这样称呼“错误”的重载:
a.m(l as Any)
但是我怎样才能显式调用所需的 m(t: List<T>)重载?类型转换 a.m(l as List<Any>)不起作用。

最佳答案

辅助功能可以帮助:

fun <T> A<T>.mList(l: List<T>) {
this.m(l);
}
a.mList(l)
仍然对不涉及像这样的任何间接的替代方案感到好奇

关于泛型类型绑定(bind)到 Any 时的 kotlin 重载解析歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64759424/

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