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