java泛型
程序员文章站
2022-03-13 12:11:59
...
[size=small]Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。下面是一个不用泛型例子[/size]:
[size=small] 注意第3行代码,但这是让人很不爽的一点,因为程序员肯定知道自己存储在List里面的对象类型是Integer,但是在返回列表中元素时,还是必须强制转换类型,这是为什么呢?原因在于,编译器只能保证迭代器的next()方法返回的是Object类型的对象,为保证Integer变量的类型安全,所以必须强制转换.
这种转换不仅显得混乱,更可能导致类型转换异常ClassCastException,运行时异常往往让人难以检测到。保证列表中的元素为一个特定的数据类型,这样就可以取消类型转换,减少发生错误的机会, 这也是泛型设计的初衷。下面是一个使用了泛型的例子:[/size]
第一行代码中指定List中存储的对象类型是Integer,这样在获取列表中的对象时,不必强制类型转换。
List myIntList = new LinkedList();//1
myIntList.add(newInteger(0));//2
Integer x = (Integer)myIntList.iterator.next();//3
[size=small] 注意第3行代码,但这是让人很不爽的一点,因为程序员肯定知道自己存储在List里面的对象类型是Integer,但是在返回列表中元素时,还是必须强制转换类型,这是为什么呢?原因在于,编译器只能保证迭代器的next()方法返回的是Object类型的对象,为保证Integer变量的类型安全,所以必须强制转换.
这种转换不仅显得混乱,更可能导致类型转换异常ClassCastException,运行时异常往往让人难以检测到。保证列表中的元素为一个特定的数据类型,这样就可以取消类型转换,减少发生错误的机会, 这也是泛型设计的初衷。下面是一个使用了泛型的例子:[/size]
List<Integer> myIntList = newLinkedList<Integer>();
myIntList.add(newInteger(0));
Integer = myIntList.iterator.next();
第一行代码中指定List中存储的对象类型是Integer,这样在获取列表中的对象时,不必强制类型转换。
上一篇: sql求1到100的质数
下一篇: ORM模型框架操作mysql数据库的方法