Generics 泛型类型如何适应类型层次结构?

Generics 泛型类型如何适应类型层次结构?,generics,kotlin,types,Generics,Kotlin,Types,Kotlin有一个完整而优雅的类型层次结构——如果这是正确的话,因为它是一个有向无环图,而不是一棵树——在和处用图表描述 我不清楚的是泛型如何适应这一切 像列表和映射这样的泛型类型以及像列表和映射这样的专门化如何适应类型层次结构?列表和映射不是类型;它们是类。要形成类型,需要指定必要的类型参数,例如列表(或列表)等 (这与Java不同,Java主要允许向后兼容。) 类型关系取决于:例如,List是List的子类型,因为它的类型参数是协变的;但是MutableList是不变的,与MutableLi

Kotlin有一个完整而优雅的类型层次结构——如果这是正确的话,因为它是一个有向无环图,而不是一棵树——在和处用图表描述

我不清楚的是泛型如何适应这一切


列表
映射
这样的泛型类型以及像
列表
映射
这样的专门化如何适应类型层次结构?

列表
映射
不是类型;它们是类。要形成类型,需要指定必要的类型参数,例如
列表
(或
列表
)等

(这与Java不同,Java主要允许向后兼容。)

类型关系取决于:例如,
List
List
的子类型,因为它的类型参数是协变的;但是
MutableList
是不变的,与
MutableList
没有关系(除了它们都是
Any
的子类型)

这为类型层次结构增加了额外的维度,使其比您可能看到的简单图形更加复杂。但该原则非常简单,因此通常不会绘制

更多细节,一如既往,请参阅