什么是形变(Type Variance)?
在类型系统中,协变(covariance) 和 逆变(contravariance) 统称为 型变(variance) 。它们描述的是在类型变换的作用下,子类型关系是否以及如何发生变化。 什么是型变(Variance)? 我们先看一个抽象模型: 设有两个类型 X 和 Y,若 X ≤ Y 表示 X 是 Y 的子类型。 设 f 是一种 类型变换 ,即将类型映射为另一个复合类型,例如:f(T) 可以是 List<T>、T[] 等。 那么根据 f(X) 与 f(Y) 的子类型关系,我们可以将 f 分为以下四类: 名称 表达式关系 含义 协变 X ≤ Y⇒f(X) ≤ f(Y) 子类型关系保持不变 逆变 X ≤ Y⇒f(Y) ≤ f(X) 子类型关系被反转 双变 X ≤ Y⇒f(X) ≤ f(Y)且f(Y) ≤ f(X) 双向成立,类型变换前后两者相互兼容 不可变 X ≤ Y但f(X)与f(Y)不可比较 类型变换后无子类型关系,类型之间完全独立 ✅ 型变描述的是:子类型关系在类型变换之后是否还能“传递下去”。 示例说明:以 Animal 和 C....