泛型类型限定(1)
编写的代码可以被很多不同类型的对象重用
特定场合下,需要对类型进行限定
-如约定必须是Comparable的子类
-extends 固定,后面可以是多个,以&拼接,如<T extends Comparable&Serializable>
-extends限定可以有多个接口。但只能有一个类,且必须是拍在第一位
-逗号隔参数,<T extends File & Cloneable, U extends Serializable>
泛型继承原则(1)
1、泛型类之间的继承
-Pair和Pair之间没有任何关系,无论S和T之间是什么关系
-泛型类可以扩展或实现其他类,如ArrayList实现List
List orange = new ArrayList();
泛型通配符类型(1)
1、上限界定符,Pair<? extends S>
-Pair能接收的参数类型,是S自身或子类
Pair<? extends Fruit>代表Pair,pair等
只能set
2、下限界定符 Pair<? super S>
-Pair 能接收的类型参数,是S的自身或超类
Pair<? super Apple>代表Pair,Pair,Pair等
只能get不能set,编译器保证放入的是S本身或超类,但不保证出来是什么具体类型
泛型PECS原则
-Producer Extends Consumer Super
-要从泛型类读取类型T的数据,并且不能写入,可以使用?
extends 通配符:(Producer Extends,泛型是生产者,往外输出)
-如果要向泛型类写入类型T的数据,并且不需要读取,可以使用?
super通配符:(Consumer Super,泛型类是消费者,往内增加)
-如果既想写入又想读出,就不使用通配符