在泛型中super说明:<? super T> ?代表一种"特定"的类型,且此类型是T类型的父类或T类型,也就是说T是?(这种特定类型而其中比较难理解的是在添加对象时,为什么添加的又是T类型的子类呢?这点仔细想想确实应该是这样,<? super T>这样声明的泛型,是T类型的父类型或T类型的一个泛型,而编译器并不是相当的聪明并不知道这个?代表的确切类型(因为Java中的泛型机制是擦除原则),因此为了确保添加的对象一定是合法的,添加的元素必须是T类型或是T类型的子类。
在泛型中extends的说明:<? extends T> ?表示一种特定的类型,且是T类型的一种"特定"的子类,也就是说T是?(特定类同样其中比较难理解的是,添加对象,为什么任何类型的对象都无法添加进去泛型呢?,想想如果前面的理解好了,这也不难理解,?是T类型或是其子类,而T类型的子类可能不唯一,编译器又不知道?确切的代表什么类型(只是知道是一种特定的类型,但不确定这种特定的类型是哪种类型)因为T类型的子类型不唯一,所以这种特定的类型编译器又不知道是哪种特定的类型,因此任何类型都无法添加进去。 |