Java 泛型默认是不支持协变的
Java 泛型默认是不支持协变的,原因很简单,类型安全:如果允许协变,可能会造成类型转换异常。
Java 泛型默认是不支持协变的。这是因为如果 Java 泛型支持协变,那么就可能会引发运行时类型转换异常。下面是一个例子:
List<String> stringList = new ArrayList<>();
List<Object> objectList = stringList; // 编译错误
objectList.add(new Object());
String s = stringList.get(0); // 运行时类型转换异常
在这个例子中,如果 Java 泛型支持协变,那么我们就能把一个 List 赋值给一个 List。然后,我们就能在 List 中添加任何类型的对象,包括不是 String 的对象。但是,当我们试图从 st