?extends XX 决定了容器内元素的最高阶层就是 XX,因为类的赋值关系永远满足: 高阶类 A= new 低阶类()!! 所以可能用XX这个最高阶的类去接受list容器get出来的元素而永远不会报错,因为永远满足:XX 变量 = list.get(index) 。所以是可以get的但是不能add,因为extends决定的是天花板,不是地板,所以你的添加关系中add只有加入最低阶层的类(这种类不存在) 才能满足赋值的恒成立性!
? super XX 决定了容器内元素的最低阶层是 XX,因为类的赋值关系 永远满足: 高阶类 A= new 低阶类()!! 这里面最高阶层达到了顶层的Object,所以要使得类赋值关系的恒成立,就是说get出来的东西能够赋值成功,只能用Object去接受get出来的变量。然而这没意义。同理,我们add进去的也必须是最底阶层的类才能使得赋值关系恒成立,也就是只能add 进去XX类的实例。