泛型
1.基本信息
包:java.util
类型:接口
当不写泛型的时候,认为是Object
ArrayList arrayList = new ArrayList();
//不写泛型的时候(为了先下兼容),认为元素类型就是Object,
//等价于 ArrayList
2.泛型出现的原因
以集合列表说明:
arrayList.add("hello");
arrayList.add("world");
arrayList.add(10);//Integer -> 装箱操作
问题就在于消费集合元素时,无法确定元素的类型。只能在运行时暴露异常信息。
为了解决此问题,Java语言就提供了泛型的技术,用来约束集合中元素的类型,提前将此问题在开发时期就暴露出来,这样会将异常提前到编译期。
3.注意事项
- 尖括号中的标识符是自己起的,数量没有限制,用逗号分隔就行.
class Class2<T,M>{
- 只是从实践中,大家会使用一些见名知意的泛型标识:
- E-----element
- T----- type
- Pk---- 主键
- 有了泛型定义以后,所有类中出现类型的地方(成员类型、方法返回值、方法参数)可以直接使用泛型标识
4.方法和变量绑定
例:
public static void main(String[] args) {
String c = method("45","45");
System.out.println(c);
}
public static <T> T method(T a,T b){
return a;
}
main方法中的c类型是方法method返回的,所以类型都是T,
method中传入的参数要求都是T类型,所以将c类型和传入参数a b方法method返回类型绑定都要一致。