一、为什么使用泛型
代码重用、增加可读性、高度解耦
二、泛型发展历史
JDK1.5引入,包括泛型、注解、枚举
三、泛型的概念
<T> T代表占位符,标识类型参数,可以定义任意符号,但建议用单个的大写字母替代
<T>只接收引用类型,不接收基本类型
四、泛型的使用
泛型类、泛型接口、泛型方法
泛型类:直接定义到类名后面,class Demo<T>
泛型接口:直接定义到类名后面,interface Demo<T>
泛型方法:泛型方法的类型参数写在返回值前面,<T> int add(T t1,T t2)
实现泛型接口的类,要么继续保留泛型类型,要么明确泛型类型
通配符
“?”代表任意参数类型
<? extends Number>上限通配符,只能传入Number的子类
<? super String>下限通配符,只能传入String的父类
泛型擦除
编译期擦除类型参数,如List<String> 擦除之后为List