Java泛型不是 协变的 。如果可以这样做:
ArrayList<Animal> x = new ArrayList<Cat>();
那么您将能够执行以下操作:
x.add(new Dog());
这违反了
ArrayList<Cat>只能容纳
Cat对象(或子类对象)的概念。
阅读本文以获得更多详细信息:
Java理论与实践:泛型陷阱
。

Java泛型不是 协变的 。如果可以这样做:
ArrayList<Animal> x = new ArrayList<Cat>();
那么您将能够执行以下操作:
x.add(new Dog());
这违反了
ArrayList<Cat>只能容纳
Cat对象(或子类对象)的概念。
阅读本文以获得更多详细信息:
Java理论与实践:泛型陷阱
。