You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Kotlin中向接收Any的函数传List会编译报错?

为什么Kotlin中emptyList()无法直接传给接收Any类型的函数?

这个编译错误的核心和Any本身无关,问题出在emptyList()的泛型特性上:

  • emptyList()是泛型函数,签名为fun <T> emptyList(): List<T>,编译器必须明确推断出类型参数T的具体类型才能生成有效代码。
  • 传入字符串、数字这类具体类型时,编译器能直接确定类型;但emptyList()本身没携带任何类型信息,而Any是所有类型的父类,编译器没法判断你需要的是List<Any>还是其他具体类型的List,因此抛出“Not enough information to infer type variable T”的错误。
  • 虽然Kotlin的Any等价于Java的Object,但泛型的类型推断逻辑不会自动把emptyList()默认推断为List<Any>,必须显式给出类型提示。

解决方法

  • 显式指定泛型类型:
fun other() {
    fu(emptyList<Any>())
}
  • 先将list赋值给带明确类型的变量,再传递:
fun other() {
    val empty: List<Any> = emptyList()
    fu(empty)
}

内容的提问来源于stack exchange,提问作者mykola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:07:02