我知道这似乎是一个重复的问题,但我对不变性、协变和逆变如何工作感到困惑。
我不明白为什么我不能编译这个片段:
class Test<X: List<Any>>{
lateinit var list2:List<Any>
lateinit var list1:X
fun putList(){
list2 = emptyList()
list1 = emptyList<Any>()
}
}
我收到类型不匹配错误必需 X 找到列表
但是,如果我将 X 泛型定义为“out”,我将收到一个错误,表明参数 X 在 list1 var 中是不变的。
有人可以帮助另一个迷失在 Kotlin 泛型中的可怜的灵魂吗?