美文网首页
java泛型总结

java泛型总结

作者: Mythqian | 来源:发表于2021-01-12 15:58 被阅读0次

    0、泛型定义:在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化。例如在哈希表的存取中,JDK1.5之前使用HashMap的get()方法,返回值就是一个Object对象,由于Java语言里面所有的类型都继承于java.lang.Object,那Object转型为任何对象成都是有可能的。但是也因为有无限的可能性,就只有程序员和运行期的虚拟机才知道这个Object到底是个什么类型的对象。在编译期间,编译器无法检查这个Object的强制转型是否成功,如果仅仅依赖程序员去保障这项操作的正确性,许多ClassCastException的风险就会被转嫁到程序运行期之中

    1、泛型方法& 泛型类 & 泛型接口
    (1)泛型类实现泛型接口


    1.png
    2.png

    (2)泛型方法定义


    3.png

    2、限定类型变量(T extends 类&接口&...&接口)


    4.png

    ** 多个类型限定 ,类必须放在第一个,有且仅有一个类限定其他都是接口限定

    3、泛型中的约束和局限性
    (1)不能实例化类型变量
    (2)不能在类中的静态域中引用类型变量(静态方法本身是泛型方法是可以的)
    (3)泛型类型变量不能是基本类型
    (4)泛型不支持instanceof关键字
    (5)不能实例化泛型数组
    (6)泛型类不能继承 Exception /Throwable 类,也不能捕获泛型类对象


    5.png 6.png

    4、通配符(因为泛型的继承关系限制所以引出 ? extends T 和 ? super T)
    (1)? extends T 用来读数据


    7.png

    (2)? super T 用来写数据


    8.png

    5、虚拟机如何实现泛型?
    (1)进行泛型擦除(伪泛型)
    (2)在用到泛型类的地方进行强转
    (3)泛型类型弱记忆在Signature类中
    **注意:方法重载中的泛型参数


    9.png

    相关文章

      网友评论

          本文标题:java泛型总结

          本文链接:https://www.haomeiwen.com/subject/ndheaktx.html