JAVA——泛型

一、泛型的概念

泛型是JDK1.5之后引入的新特性,是一种将元素的类型提前在编译时期确定,并且它是一种参数化类型的技术。

二、泛型的格式

< >里面可以是任意的字母,一般泛型类使用E,泛型方法使用T

这里只能够定义引用类型,不能够定义基本书类型

< >里面既可以定义一个泛型,也可以定义多个泛型

三、泛型的优点

泛型最大的优点就是实现了java程序的安全性。 泛型可以使编译器知道一个对象的限定类型是什么,即在编译时期就确定类型,

消除了强制类型转换带来的安全隐患,增加代码的可读性,提高的代码的重用率,减少了很多出错的机会。请看如下代码:

    Collection c=newArrayList();

    c.add("蜀国");

    c.add("魏国");c.add("吴国");

    c.add(15);c.add(1.5);

    // 遍历集合

    for(Iterator it=c.iterator();

    it.hasNext();){Object oj=it.next();

    // 访问子类每一个元素所特有的方法

String s=(String)oj;System.out.println("字符串的长度"+s.length());}


        由于在集合中插入了不同类型的元素,运行程序后输出界面显示如下异常:

            java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

        通过对插入元素的类型做逐一判断并转型虽能解决上述异常,单需要使用大量if-else语句,大大降低了程序的可读性,且不利于扩展,此时如使用泛型就能很好的解决上面的问题,请看如下代码:

Collection<String>c=newArrayList<String>();//确定泛型类型<String>

    c.add("蜀国");

    c.add("魏国");

    c.add("吴国");

    // c.add(15);          // 当确定泛型类型后,在编译时期就强制规定不允许添加其它类型的元素,否则编译报错

    // c.add(1.5);

    // c.add(new Student("1001", "张三", 30));

Iterator<String>it=c.iterator();    //      获取迭代器对象

    while(it.hasNext()){                //    遍历集合

        String s=it.next();

    System.out.println(s+"|"+s.length());}


四、定义泛型

1 泛型可以定义在类上,这样的类成为泛型类

2 泛型可以定义在接口上,这样的接口成为泛型接口

确定泛型的位置:

        a  在实现类上确定泛型

        b  在调用时确定泛型类型

        c  使用匿名内部类确定泛型

3 泛型可以定义在方法上,这样的方法成为泛型方法,泛型方法有如下特点:

        a   泛型方法独立于泛型类或者泛型接口

        b  泛型方法在方法调用的时候确定类型

        c  一个泛型接口或者泛型类中可以有多个泛型方法

        d  一个泛型方法也可以定义多个泛型

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容