定义
所谓泛型,就是运行定义类、接口时指定类型参数,这个参数将在声明变量、创建对象时确定。jdk1.5改写了集合框架中的全部接口和类,为这些接口、类增加了泛型支持,从而可以在声明集合变量、创建集合对象时传入类型实参,比如:List<String>和ArrayList<String>
背景
java集合有个缺点:当把一个对象“丢进”集合后,集合就会“忘记”这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了object类型。
java集合之所以被设计成这样,是因为设计集合的程序员不会知道我们需要用它来保存什么类型的对象,所以,就把集合设计成能保存任何类型的对象,只要求具有很好的通用性。但这样做也带来两个问题:
1、集合对元素类型没有任何限制,这样可能引发一些问题:例如想创建一个只能保存dog对象的集合,但程序也可以轻易地将cat对象丢进去,所以可能引发一些问题。
2、由于集合丢失了对象的状态信息,只知道它盛装的是object,因此取出元素后,通常还需要进行强制类型转换,这种转换不仅代码臃肿,而且容易引起ClassCastExeception异常。
作用
1、增加泛型后的集合,就会记住集合中元素的类型,并可以在编译时检查集合中元素的类型,如果试图向集合中添加不满足类型要求的对象,编译器就会提示错误。
2、增加泛型后的集合,可以让代码更加简洁、程序更加健壮。