1、数组的协变性:
数组的协变性指的是:如果类Base是类Sub的基类,那么Base[]就是Sub[]的基类。
而泛型是不可变的,List<Integer>不是List<Object>的基类,更不会是它的子类。
2、数组的具体化:
数组是具体化的,而泛型在运行时是被擦除的。
数组是在运行时才去判断数组元素的类型约束。
而泛型正好相反,在运行时,泛型的类型信息是会被擦除的,只有编译的时候才会对类型进行强化。
java泛型是编译器泛型,是一种语法糖,生成的二进制代码是没有泛型,jvm感受不到泛型。java的泛型编译生成二进制代码的时候,进行了类型的擦除,放入集合,放入集合的实际上是object类型,从集合中获取对象的时候,获取的是object类型,然后进行了强制类型转换,转换成实际的类型。