[J2SE 5.0专题]泛型

大凡用过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<Integer> aList = new ArrayList<Integer>();
        aList.add(new Integer(7));
        aList.add(new Integer(17));
        int sum = 0;
        Iterator<Integer> iter = aList.iterator();
        while (iter.hasNext()) {
            sum += iter.next().intValue();
        }
        System.out.println(sum);
    }
}


在这个例子中我提供了两个不同方法来完成同样的事,例子本身有没有意义不重要,我只是想让你看到一些实际在Java中使用泛型的代码。

泛型的好处在于它可以避免那些我们本不需要去考虑的类型转换,并且可以提供编译期的类型安全检查。(注意,在上面的例子中,如果不使用泛型,那么我们可以把iter.next()返回的对象转换成任意类型,然后调用那个类型的方法而不会抛出任何编译期异常)同时,泛型的引入也为模板类和模板方法的出现奠定了基础。

如果有时间,建议大家把新的java.util.Collection的源码拿下来看一看,你完全可以实现自己的支持泛型的API。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值