泛型
- 定义类,接口,方法时,同时声明的一个或多个类型变量(如:),成为泛型类,泛型接口,泛型方法,它们统称为泛型。
- JDK5引入,可以在编译阶段约束操作的数据类型,并进行检查
注意:泛型中只能编写引用数据类型
泛型的好处
- 统一数据类型
- 将运行期的错误提升到编译期
泛型方法
- 非静态方法:跟着类的泛型去匹配
- 静态方法:必须声明出自己独立的泛型(static关键字后面)
- 在调用方法,接收实际参数的时候确定到具体类型
案例解析:
public static void main(String[] args) {
String[] str = {"aaa","bbbb","ccc"};
Integer[] integers = {1,2,3,4};
Double[] doubles = {1.1,1.2,1.3};
printArr(str);
printArr(integers);
printArr(doubles);
}
public static<T> void printArr(T[] arr){
System.out.print("[");
for (int i = 0; i < arr.length-1; i++) {
System.out.print(arr[i]+",");
}
System.out.println(arr[arr.length-1]+"]");
}
泛型接口
- 类实现接口的时候,如果接口带有泛型,有两种操作方式
- 类实现接口的时候,直接确定类型
- 延续接口的泛型,等创建对象的时候再确定
泛型通配符
?:泛型通配符(能接收任意类型)
? extends E :只能接收E或者E的子类
? super E :只能接收E或者E的父类