泛型介绍
:
JDK5
中引入的特性,总而言之就是:可以在编译阶段约束操作的数据结构,并进行检查。<数据类型>
使用泛型的好处
:
注意
:如果我们没有通过泛型给集合指定类型,默认所有的数据都是Object类型,此时可以往集合中添加任意的数据类型,**弊端:**此时我们在获取到集合的数据时,无法使用他的特有行为(无法访问其特有的方法函数)。
真相
:
泛型使用
:
使用在类后面:
泛型类
适用场景:当一个类中,某个变量的数据类型不确定,可定义带泛型的类,做到约束,检查变量类型的作用。
格式:修饰符 class 类名<类型>{}
ArrayList<String> stringList = new ArrayList<>();
ArrayList<Integer> intList = new ArrayList<>();
使用在方法上:
泛型方法
使用场景:方法中形参类型不确定时,可以使用类名后面定义的泛型,即泛型类,当然也可以也可以在方法上定义泛型(仅本方法使用)。
格式:修饰符 <类型>返回值类型 方法名(类型 类型名){}
public <T> T getFirstElement(List<T> list) {
return list.get(0);
}
用在接口后面:
修饰符 interface 接口名<类型>{}
泛型的继承和通配符
:
?
—— 通配符是一种用于表示不确定类型的类型参数。?
用于表示通配符。通配符可以在方法参数中用于接受多个类型的参数。? entends E
:可以传递E或者E所有的子类类型。? super E
:可以传递E或者E所有的父类类型。