List<Number> list = new List<Integer>是编译错误的; 但Number[] array = {new Integer, new Double, new Float}是正确的。 解释: 两个泛型之间是没有关系的(所以自然没有继承关系)List<Integer>在类型上不等价于List<Number>真正的问题在于,这里讨论的是容器的类型,而不是容器持有的类型。
首先明确下什么是协变? 然后:泛型不允许协变,而数组允许协变 紧跟着:不允许定义泛型数组 这一篇文章主要围绕上面三个问题展开。 什么是协变? 在泛型或者数组的case下,协变其实指的是,基础类型具备父子关系,那么对应的容器类型也具备。 举个例子: class F{}class S extends F{}public class Main1 {public static vo
一、泛型类 public class GenericStack<T>{private T[] stackArray;//泛型数组private int currentPosition;//当前位置private int count;//栈的数据容量public GenericStack(int count){this.count = count;this.stackArray = new T[