Java中的泛型机制

泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制。

其好处是:

        (一)将运行时期出现的问题CLassCastException(类型匹配异常),转移到了编译时期,方便与程序员解决问题,让运行时期问题减少,安全了。

        (二)避免了强制类型转换,且运行时不会提示程序类型没检查的不安全提示。

版本升级无非包括三部分,1:程序高效,2:代码简化,3:安全提升。

在Java的集合中,我们往集合里面添加元素时并不指定元素的类型,在编译时并不会报有关类型错误,但是在程序运行时就有可能报类型错误,借鉴创建基本数组类型时指定其就是int类型或是其他的一种类型,就会在编译时检测出里面是否是指定的int类型,

如int[] aa = new int[20];赋值aa[1] = 3;不会报错,大师赋值aa[1]=3.5;编译时就会报错,因为类型不匹配。

源代码例子:

package 泛型;

import java.util.ArrayList;
import java.util.Iterator;

public class GenericDemo {//泛型演示

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> al = new ArrayList<String>();//指定集合里面只能添加String类型的数据,如果添加其他类型的就会报错
        al.add("asd");
        al.add("fgh");
        al.add("jkl");
        //al.add(4);错误,类型不匹配
        //==al.add(new Integer(4));基本数据类型有自动装箱拆箱功能
        
        //也要制定迭代器里面存储指定类型String
        Iterator<String> it = al.iterator();//从类 java.util.AbstractList 继承的方法
        while(it.hasNext())
        {
            String s = it.next();//制定了类型就不用强制类型转换了
            //String s = (String)it.next();//没指定ArrayList类型并且Iterator类型时必须强制类型转换
            System.out.println(s+":"+s.length());
        }

    }

}

===============================================================================

package 泛型;
//泛型在比较器中的应用,先按从长到短的顺序输出,再按字母顺序先后输出
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class GenericDemo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //构造一个新的空 set,该 set 按照元素的自然顺序排序。TreeSet()
        
        //构造一个新的空 set,该 set 根据指定的比较器进行排序。new LenComparator()
        TreeSet<String> t = new TreeSet<String>(new LenComparator());
        //TreeSet按顺序排序输出
        t.add("z");
        t.add("asd");
        t.add("aasd");
        t.add("zfgh");
        t.add("jkl");
        
        Iterator<String> it = t.iterator();
        while(it.hasNext())
        {
            String s = it.next();
            System.out.println(s);
        }

    }

}
//长度比较器
class LenComparator implements Comparator<String>{

    @Override
    public int compare(String o1,String o2) {
        // TODO Auto-generated method stub
        //int num = o1.length().compareTo(o2.length());//错误
        int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));
        
        if(num==0)
            return o1.compareTo(o2);
        else
            return num;
    }
    
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝地反击T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值