数组有内建的协变类型,而泛型没有

版权声明:本文为博主原创,转载请注明出处。 https://blog.csdn.net/u011848397/article/details/88915948

List<Number> list = new List<Integer>是编译错误的;
Number[] array = {new Integer, new Double, new Float}是正确的。

解释:

  1. 两个泛型之间是没有关系的(所以自然没有继承关系)
  2. List<Integer>在类型上不等价于List<Number>
  3. 真正的问题在于,这里讨论的是容器的类型,而不是容器持有的类型。

Java编程思想P390-391
Java编程思想P407,自限定类型可产生协变参数类型

猜你喜欢

转载自blog.csdn.net/u011848397/article/details/88915948