什么是泛型?
定义 类、接口、方法时,同时声明了一个或多个类型变量(如:<E>),称为泛型类、泛型接口、泛型方法、他们统称为泛型。public class ArrayList<E>{ }。
有什么作用呢?
泛型提供了在编译阶段约束所能操作的数据类型,并进行检查的能力!
泛型类:
修饰符 class 类名<类型变量,类型变量,.....>{ }
注意:类型变量建议用大写的英文字母,常用的有:E(元素类型)、T(返回值类型)、K(键类型)、V(值类型)等。
泛型接口:
修饰符 interface 接口名<类型变量,类型变量,.....>{ }
注意:类型变量建议用大写的英文字母,常用的有:E(元素类型)、T(返回值类型)、K(键类型)、V(值类型)等。
泛型方法:
修饰符 <类型变量,类型变量,.....> 返回值类型 方法名 (形参列表){ }
通配符:就是"?",可以在使用泛型的时候代表一切类型;E T K V是在定义泛型时使用。
泛型的上下限:?extend Car:?能接受的必须是Car的或者其子类。
?super Car:?能接受的必须是Car的或者其父类。
泛型不支持的类型:
泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。因为泛型操作的都是对象,底层源码就是这样写的。
包装类:
包装类就是把基本类型的数据包装成对象的类型。
自动装箱和自动拆箱就是基本数据类型和包装类可以无痛转换。
包装类具备的其他功能: