类型不匹配:推断类型是T但kotlin.Any是预期的

net*_*men 8 kotlin

我有以下代码:

val map = HashMap<Int, Any>()
fun <T> test(t: T) = map.put(0, t) // Type mismatch: inferred type is T but kotlin.Any was expected
Run Code Online (Sandbox Code Playgroud)

但是每个Kotlin类都有Any作为超类,为什么会出现这个错误呢?

Mic*_*ael 18

T在此函数中可以为空.您应该明确指定它是不可为空的.

fun <T : Any> test(t: T) = map.put(0, t)
Run Code Online (Sandbox Code Playgroud)

  • 除此之外,裸``T>`的默认界限是`Any?` (10认同)