泛型就是参数化类型,把数据类型作为参数,在使用时确定用什么类型。也就是在定义时不确定具体是什么类型,所以把不确定的数据类型当作参数,等使用时再确定类型。分为泛型类、泛型接口、泛型方法。
泛型类
- 表示类中有一个未知类型
- 定义方法:public class 类名<T>{},T是类型参数,可以用任何字母表示,一般用T、E、K、V
- 可以在类内部使用T
- 使用类时通过 类名<类型> 来指定具体类型
- JDK7以上支持泛型的类型推断:类名<类型> 对象名 = new 类名<>();
泛型接口
- 表示接口中有一个未知类型
- 定义方式:public interface 接口名<T> {}
- 可以在接口内部使用T
- 在使用接口时需要在接口名后通过<类型>指定具体的类型
泛型方法
- 表示方法中有一个未知类型
- 定义方式:public 修饰符 <T> 返回值类型 方法名(){}
- 可以在方法内部使用T
- 在调用方法时指定具体的类型
- 应用场景:如果类和接口没有定义泛型,但是想在方法中使用泛型,此时可以将该方法定义为泛型方法
特性
- 泛型的类型参数必须是引用类型,不能是基本类型
- 泛型的类型参数可以有多个,即多个泛型参数(如<T, K, V>)
- 可以使用泛型通配符:
<? extends T> 限定类型的上限,即参数类型必须是T或T的子类
<? super T> 限定类的下限,即参数类型必须是T或T的父类
Java - 泛型
原文:https://www.cnblogs.com/wly603755/p/14322985.html