Java泛型

一  为什么要用泛型

            泛型主要有两个好处:

                   编译时类型安全;

                    代码复用

二 泛型使用

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

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

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

泛型限定符:extends  

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

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

三 泛型的约束和局限性

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

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

不允许使用 instanceof  关键字

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

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

无法捕获
可以抛出

四  继承规则

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

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

通配符:

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

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


五 虚拟机实现泛型的原理


类型擦除:

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

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

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

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

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

推荐阅读更多精彩内容

  • 泛型的好处 使用泛型的好处我觉得有两点:1:类型安全 2:减少类型强转 下面通过一个例子说明: 假设有一个Tes...
    德彪阅读 1,144评论 0 0
  • 参考地址:《Java 泛型,你了解类型擦除吗?》 《Java中的逆变与协变》 《java 泛型中 T、E .....
    琦小虾阅读 3,060评论 0 11
  • 概述 泛型的本质是参数化类型,通常用于输入参数、存储类型不确定的场景。相比于直接使用 Object 的好处是:编译...
    彳亍口巴阅读 139评论 0 3
  • 泛型是Java中一项十分重要的特性,在Java 5版本被引入,在日常的编程过程中,有很多依赖泛型的场景,尤其是在集...
    zhipingChen阅读 3,024评论 1 6
  • 为什么要疏通经络? 因为: 肺经不通:怕风易汗咽干咳嗽;过敏性鼻炎,皮肤干燥容易过敏;动则气短胸闷面色无华。 大肠...
    菡丹飞扬阅读 239评论 0 0