最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
[J2SE 5.0专题][2.1]泛型
时间:2022-07-02 17:40:35 编辑:袖梨 来源:一聚教程网
大凡用过C/C++的朋友对“泛型”这个词都不会陌生吧?我相信有过一些Java编码经验的朋友或多或少也遇到过使用集合类的方法时必须要手工做类型转换的情况。看下面的例子:
import java.util.ArrayList;
import java.util.Iterator;
public class MyGenerics {
public static void main(String[] args) {
useNonGenerics();
useGenerics();
}
private static void useNonGenerics() {
ArrayList aList = new ArrayList();
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator iter = aList.iterator();
while (iter.hasNext()) {
sum += ((Integer)iter.next()).intValue();
}
System.out.println(sum);
}
private static void useGenerics() {
ArrayList aList = new ArrayList();
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator iter = aList.iterator();
while (iter.hasNext()) {
sum += iter.next().intValue();
}
System.out.println(sum);
}
}
在这个例子中我提供了两个不同方法来完成同样的事,例子本身有没有意义不重要,我只是想让你看到一些实际在Java中使用泛型的代码。
泛型的好处在于它可以避免那些我们本不需要去考虑的类型转换,并且可以提供编译期的类型安全检查。(注意,在上面的例子中,如果不使用泛型,那么我们可以把iter.next()返回的对象转换成任意类型,然后调用那个类型的方法而不会抛出任何编译期异常)同时,泛型的引入也为模板类和模板方法的出现奠定了基础。
如果有时间,建议大家把新的java.util.Collection的源码拿下来看一看,你完全可以实现自己的支持泛型的API。
import java.util.ArrayList;
import java.util.Iterator;
public class MyGenerics {
public static void main(String[] args) {
useNonGenerics();
useGenerics();
}
private static void useNonGenerics() {
ArrayList aList = new ArrayList();
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator iter = aList.iterator();
while (iter.hasNext()) {
sum += ((Integer)iter.next()).intValue();
}
System.out.println(sum);
}
private static void useGenerics() {
ArrayList
aList.add(new Integer(7));
aList.add(new Integer(17));
int sum = 0;
Iterator
while (iter.hasNext()) {
sum += iter.next().intValue();
}
System.out.println(sum);
}
}
在这个例子中我提供了两个不同方法来完成同样的事,例子本身有没有意义不重要,我只是想让你看到一些实际在Java中使用泛型的代码。
泛型的好处在于它可以避免那些我们本不需要去考虑的类型转换,并且可以提供编译期的类型安全检查。(注意,在上面的例子中,如果不使用泛型,那么我们可以把iter.next()返回的对象转换成任意类型,然后调用那个类型的方法而不会抛出任何编译期异常)同时,泛型的引入也为模板类和模板方法的出现奠定了基础。
如果有时间,建议大家把新的java.util.Collection的源码拿下来看一看,你完全可以实现自己的支持泛型的API。
相关文章
- 明末渊虚之羽在哪里获取头陀的回响 头陀回响获取方法 07-30
- 2025年全球十大加密货币交易平台App排名 最新交易所榜单推荐 07-30
- 剑星战斗思路是什么 战斗思路分享 07-30
- Twinstake 推出 ETH 质押「启动与退出计算机」 07-30
- 燕云十六声寄棺主无伤怎么通关 鬼神愁无伤逃课打法攻略 07-30
- 明末渊虚之羽铜灯盏在哪里获取 铜灯盏获得方法介绍 07-30