面试回答
<? extends T>
表示类型的上界,表示参数化类型的可能是 T 或 T 的子类。
<? super T>
表示类型下界(Java Core 中叫超类类型限定),表示参数化类型是此类型的超类型(父类型),直至 Object
在使用限定通配符的时候,需要遵守 PECS 原则,即 Producer Extends,Consumer Super;
上界生产,下界消费。
如果要从集合中读取类型 T 的数据,并且不能写入,可以使用 <? extends T>;(Producer Extends)
如果要从集合中写入类型 T 的数据,并且不能读取,可以使用 <? super T>
(Consumer Super)
extend 的时候是可读取不可写入,那为什么叫上界生产呢?
因为这个消费者/生产者描述的<集合>,当我们从集合读取的时候,集合是生产者。
如果既要存又要取,那么就不要使用任何限定符 。