`

集合泛型总体介绍

阅读更多

  一、 泛型优点:安全机制,强制转换。

实例:

ArrayList al=new ArrayList();//定义集合
al.add("papapap01");
al.add("papap02");
al.add("ppap03");
al.add("pap01");
Interator it=al.iterator();//迭代器,遍历元素
while(it.hasNext())
{
String s=(String)it.next();//强转为String型
System.out.println(S+":"+s.length());
}

 s输出:papapap01:9

          papap02:7

        ppap03:6

         pap01:5

ArrayList al=new ArrayList();//定义集合
al.add("papapap01");
al.add("papap02");
al.add("ppap03");
al.add(3);//添加一个Integer类的对象,实际上根据插箱装箱为al.add(new Integer(3))
Interator it=al.iterator();//迭代器,遍历元素
while(it.hasNext())
{
String s=(String)it.next();//强转为String型
System.out.println(S+":"+s.length());
}

 编译时没有错误,运行时出现classcastException异常。不可能让用户解决这样的问题。于是,在java1.5中引入了泛型,是一个安全机制。

 由于,定义容器(集合)时,没有明确类型,打来了非常严重的后果,泛型的出现就是为了给集合元素定义一个类型。就像数组一样,定义的时候就指定了数组类型 int【】 aar=new int【10】;

ArrayList al<String>=new ArrayList<String>();//定义集合,同时限定了类型
al.add("papapap01");
al.add("papap02");
al.add("ppap03");
al.add(3);//添加一个Integer类的对象,实际上根据插箱装箱为al.add(new Integer(3))
Interator it=al.iterator();//迭代器,遍历元素
while(it.hasNext())
{
String s=(String)it.next();//强转为String型
System.out.println(S+":"+s.length());
}

 由于加入了泛型,直接在编译时就报错。

ArrayList al<String>=new ArrayList<String>();//定义集合,同时限定了类型
al.add("papapap01");
al.add("papap02");
al.add("ppap03");
Interator<String> it=al.iterator();//迭代器,遍历元素,迭代器来源于集合。
while(it.hasNext())
{
String s=it.next();//去掉强转,仍能通过
System.out.println(S+":"+s.length());
}

 二、泛型格式:通过<>来定义要操作的引用数据类型。类比函数的参数传递

在集合框架里,只要有<>,就必须定义泛型。

分享到:
评论
Global site tag (gtag.js) - Google Analytics