Pair 泛型的实际参数类型不能赋值给 Number,是因为 Java 中的泛型是不支持协变的。
在 Java 中,泛型是不可变的,即使某个类型参数 A 是另一个类型参数 B 的子类型,List 也不是 List 的子类型。这是为了确保类型安全性,避免在运行时出现类型不匹配的错误。
因此,即使 Pair 是 Pair 的子类型,也不能将 Pair 赋值给 Pair。这是因为在编译时,Java 编译器无法确定 Pair 中的元素是否都是 Number 类型,因此不允许这样的赋值操作。
如果需要将 Pair 赋值给 Pair,可以使用通配符来实现。例如,可以使用 Pair 来表示 Pair 的类型参数是 Number 或其子类型,这样就可以将 Pair 赋值给 Pair。但是,需要注意的是,此时无法向 Pair 中添加任何元素,因为编译器无法确定具体的类型。