1、何为泛型
首先泛型的本质便是类型参数化,通俗的说就是用一个变量来表示类型,这个类型可以是String,Integer等等不确定,表明可接受的类型。
2、为何要引入泛型,即泛型与Object的优势
由于泛型可以接受多个参数,而Object经过强制类型转换可以转换为任何类型,既然二者都具有相同的作用,为何还要引进泛型呢?
解答:泛型可以把使用Object的错误提前到编译后,而不是运行后,提升安全性。以下用带泛型的ArrayList和不带泛型的Arraylist举例说明
代码1:
ArrayList al = new ArrayList();
al.add("hello");
al.add(4);//自动装箱
String s1 = (String)al.get(0);
String s2 = (String)al.get(1);//在编译时没问题,但在运行时出现问题
首先声明无泛型的ArrayList时,其默认的原始类型是Object数组,既然为Object类型,就可以接受任意数据的赋值,因此编译时没有问题,但是在运行时,Integer强转成String,肯定会出现ClassCastException.因此泛型的引入增强了安全性,把类转换异常提前到了编译时期。