1、概述
泛型,就是将原本的确定的类型(如:String、int、数组、对象等第)变成不确定的,在使用的时候再确定下来,
2、泛型类
class Person<T>{//定义时可以不确定类型,T 可以是任意的字母,
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
public class Main{
public static void main(String[] args){
Person<String> p = new Person<>();//使用时确定类型,将所有的 T 替换成 String
}
}
3、泛型接口
和泛型类差不多,只不过在实现时可以确定类型也可以不确定类型,如果不确定类型,那么实现这个接口的类也要加上泛型
4、泛型方法
private static <T> T 方法名(T a,T b){//<T> 是泛型,后一个 T 是返回值类型,可以不一样
//方法体
}
5、通配符
//类型通配符是使用 ? 代替方法具体的类型实参。
<? extends Person> //指定了泛型类型的上届,即泛型必须是 Person 的子类
<? super Person> //指定了泛型类型的下届,即泛型必须是 Person 的父类
<?> //指定了没有限制的泛型类型,任意类都可以
6、泛型的作用
1、 提高代码复用率
2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)