在集合框架中,Collection的add(Object obj)方法的参数是一个Object类型,无论把什么对象放入Collection及子接口或实现类中,认为只是Object类型,在通过get(int index)方法取出集合中元素是必须进行强制类型转换,不仅
繁琐而且容易出现ClassCastException异常(类型转换异常)。Map中使用put(Object key,Object value)和get(Object key)方法存取对象时,使用Iterator的next()方法获取元素是也存在同样的问题。
JDK1.5中通过引入泛型(Generic)有效的解决了这个问题。在JDK1.5中已经改写了集合框架中的所有接口和类,增加了泛型的支持。
使用泛型集合在创建集合对象是指定集合中元素的类型,从集合中取出元素是无需进行类型强制转换,并且如果把非指定类型对象放入集合,会出现编译错误。
举个例子,在没有使用泛型集合时存取String类型的对象:
ArrayList list=new ArrayList();
list.add("hello")
list.add("world");
for(Object obj:list){
String str=(String)obj;
System.out.println(str);
}
可以看出在使用集合中的元素时必须强制类型转换,但是如果我们使用泛型集合:
ArrayList<String> list=new ArrayList<String>();
list.add("hello")
list.add("world");
for(String str:list){
System.out.println(str);
}
可以看出由于我们使用了泛型集合,在创建集合时指定了集合元素的类型,因此我们可以直接使用集合中的元素,不需要再进行类型转换,同时在向集合中存入元素是也必须指定的类型。
在JDK1.5中引入的泛型有效解决了Collection和Map等集合操作中的类型转换异常问题,通过在创建集合时指定元素类型,避免了运行时的类型转换异常,提高了代码的健壮性和开发效率。
1407

被折叠的 条评论
为什么被折叠?



