很全面的泛型讲解,值得推荐。
泛型
泛型就是参数化类型
- 适用于多种数据类型执行相同的代码
- 泛型中的类型在使用时指定
- 泛型归根到底就是“模版”
优点:使用泛型时,在实际使用之前类型就已经确定了,不需要强制类型转换。
泛型主要使用在集合中
自定义泛型
泛型字母
- 形式类型参数(formal type parameters)即泛型字母
-
命名泛型字母可以随意指定,尽量使用单个的大写字母(有时候多个泛型类型时会加上数字,比如T1,T2)
常见字母(见名知意)- T Type
- K V Key Value
- E Element
- 当类被使用时,会使用具体的实际类型参数(actual type argument)代替
泛型类
- 只能用在成员变量上,只能使用引用类型
泛型接口
- 只能用在抽象方法上
泛型方法
- 返回值前面加上 <T>
通配符
通配符(Wildcards)
- T、K、V、E 等泛型字母为有类型,类型参数赋予具体的值
- ?未知类型 类型参数赋予不确定值,任意类型
- 只能用在声明类型、方法参数上,不能用在定义泛型类上
extends/super
上限(extends)
指定的类必须是继承某个类,或者实现了某个接口(不是implements),即<=
- ? extends List
下限(super)
即父类或本身
- ? super List