Iterator的next()方法 强制类型转换

分类: TW |
转自:http://qiemengdao.iteye.com/blog/1525624
Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。下面是一个不用泛型例子:
-
List
myIntList= newLinkedList(); //1 -
myIntList.add(newInteger(0));
//2 -
Integer
x=(Integer)myIntList.iterator().next(); //3
注意第3行代码,但这是让人很不爽的一点,因为程序员肯定知道自己存储在List里面的对象类型是Integer,但是在返回列表中元素时,还是必须强制转换类型,这是为什么呢?原因在于,编译器只能保证迭代器的next()方法返回的是Object类型的对象,为保证Integer变量的类型安全,所以必须强制转换。
这种转换不仅显得混乱,更可能导致类型转换异常ClassCastException,运行时异常往往让人难以检测到。保证列表中的元素为一个特定的数据类型,这样就可以取消类型转换,减少发生错误的机会,
-
List<Integer>
myIntList=newLinkedList<Integer>(); //1’ -
myIntList.add(newInteger(0));
//2’ -
Integerx=myIntList.iterator().next();
//3’