当泛型类型绑定到 Any 时,kotlin 重载解析歧义

kotlin overload resolution ambiguity when generic type is bound to Any

考虑 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) 调用似乎不明确,出现以下错误:

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)

仍然对不涉及像这样的任何间接寻址的替代方案感到好奇