为什么在集合中添加类型的子类a是非法的?

Kye*_*JmD 5 java generics wildcard pecs

给出这段代码片段

    //Creates a list of List numbers
    List<List<Number>> num = new ArrayList<List<Number>>();
    //Creates a list of List doubles
    List<List<Double>> doub = new ArrayList<List<Double>>();
    //List of doubles
    List<Double> d = new ArrayList<Double>();
    d.add(2.5);
    d.add(2.6);
    doub.add(d);

    num.add(d);//This code will not compile
Run Code Online (Sandbox Code Playgroud)

为什么不允许num.add(doub)?不是List<List<Number>>超级型 List<List<Double>>

kos*_*osa 6

泛型继承与我们对继承的理解没什么不同.如果您想使用子类类型,则需要在泛型中使用extends(或)super 定义边界(通配符).

在此输入图像描述