泛型,即是参数化类型,一提到参数,最熟悉的就是定义方法适有形参,然后调用此方法时候传递实参。
那么参数化类型是怎么理解的呢?顾名思义,就是将类型原来的具体类型参数化,类似于方法中的变量参数,此时类型也定义参数形式(可以称之未类型形参),然后在使用/调用时候传入具体类型(类型参数)。
public class GenericTest {
public static void main(String[] args) {
/*
List list = new ArrayList();
list.add("qqyumidi");
list.add("corn");
list.add(100);
*/
List<String> list = new ArrayList<String>();
list.add("qqyumidi");
list.add("corn");
//list.add(100); // 1 提示编译错误
for (int i = 0; i < list.size(); i++) {
String name = list.get(i); // 2
System.out.println("name:" + name);
}
}
}
采用泛型写法后,在//1处想加入一个Integer类型的对象会编译出错,通过List<String>,直接限定了list集合中只能包含String类型的元素,而在//2处,无需进行参数类型转换,因为此时,集合已经能够记住元素的类型信息,编译器已经能确定这是String类型了