美文网首页
Java泛型

Java泛型

作者: 星落尘 | 来源:发表于2020-02-19 16:08 被阅读0次

    一  为什么要用泛型

                泛型主要有两个好处:

                       编译时类型安全;

                        代码复用

    二 泛型使用

            泛型参数,泛型接口:被实现或继承后可以继续使用泛型 或给出类型

            泛型方法:方法语句中声明<T> 才是泛型方法

        Ps  传值泛型对象时,泛型对象的指定类的子类也可以使用

    泛型限定符:extends  

    指定泛型 必须继承或实现该类或接口,

    可以有多个限定 &连接  只能有一个类,且放在第一位(单继承  多实现)

    三 泛型的约束和局限性

    无法实例化类型变量  无法使用 T t = new T();

    静态域无法引用泛型变量(泛型方法可以使静态)原因  java 静态对象加载顺序

    不允许使用 instanceof  关键字

    泛型类数组可以定义,无法创建

    extends  限制符 可以继承 Exception Throwable  但无法被捕获,但可以被抛出

    无法捕获 可以抛出

    四  继承规则

        泛型类型  不影响泛型类的 类型,

        泛型类型继承关系,无法影响泛型类的继承关系

    通配符:

        extends  上界通配符,这个类或接口的本身或子类,限定传入参数类型的上界,用于安全的读取数据;原理:上界类型是确认的,可传子类  获取数据时  可强转为父类;

    super  下界通配符,这个类或接口的父类或父类的父类,限定传入参数类型的下界,用于安全的写入数据;原理:下界类型确定 只能传父类,可以安全的转型

    五 虚拟机实现泛型的原理

    类型擦除:

        在进入JVM之前,会把泛型去掉,JVM中的泛型类 只是自身Class,泛型类会被替换为固定Class;

    无限制泛型-------> Object

    有限制泛型-------> 上界或下界

    Ps :利用发射获取方法时,要注意泛型方法的类型被擦除成什么了

    相关文章

      网友评论

          本文标题:Java泛型

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