<? extends T> 表明集合指定的元素类型为T或者T的子类。它不可以存放任何元素,假如你存放了T类型的元素,这个集合的指定元素可能是T的某一子类,就像List<String>中不能存放Object一样。但是我们知道其中存放的元素一定是T及T的子类,元素一定可以转为T类型去获取。这类集合用于对外提供数据,是生产者
<? super T> 表明集合中的元素为T或T的父类。 它可以获取元素,但是只能被转为Object类型,你不确定集合中到底存放的是T的哪一种父类元素,但是知道它们一定是Object及其子类。你可以存放T及T的子类,因为元素类型已经确定可以被转为T及其父类类型,不能存放T的父类类型,就好像List<String>不能存放Object类型一样,但是List<String>可以存放String及其子类。这类集合用于存入数据,作为消费者