泛型

作者: QTong | 来源:发表于2020-07-09 21:58 被阅读0次

    官网解释1
    官网解释2

    定义:

    泛型是一种类型约束,于 J2SE5.0 中引入,简而言之,泛型在定义类,接口和方法时使类型(类
    和接口)成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数为您提供了一种使用
    不同输入重复使用相同代码的方法。区别在于形式参数的输入是值,而类型参数的输入是类型。
    JDK 是在编译期对类型进行检查,提供了编译时类型的安全性。它为集合框架增加了编译时类型
    的安全性,并消除了繁重的类型转换工作

    规则

    原理 :

    complierng 中检测 对象类型不对,class文件没有泛型 被擦除了,
    执行的时候没有语义
    约束

    • 不可子类化 同时也不可父类化
      不可将 Person 对象 赋值给 Driver对象 ,反过来也是 编译报错
      <Obeject ><Person> <Driver> 堪称两个标识符号,complier使用 后就擦除了,class文件中 就没有了,运行时更没有了 ,更没有语义了,没有继承关系
    • 通配符
      • 无界<?>、
      • 上界<? extends Person>、
      • 下界<? super Person>
      • programer 类 界和 方法 返回值界
        add时只能向下转型;向上转型要强转;
        ???具有上界的通配符泛型只能get,不能add除null外的对象;
        ???具有下界的通配符泛型可以add,但get获取对象为object类型;

    类型擦除

    在编译的时候 将 泛型关键字擦除:
    有界 替换为 第一边界,无界 替换为Object
    桥接方法 ,堆污染? 没看懂

    限制

    • 不能用简单类型来实例化泛型实例
    • 不能直接创建 类型参数 实例
    • 不能声明 静态属性 为泛型类型的 参数
    • 不能 create \catch\throw 参数化类型对象

    相关文章

      网友评论

          本文标题:泛型

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