泛型类型限定(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,泛型类是消费者,往内增加) -如果既想写入又想读出,就不使用通配符