泛型

官网解释1
官网解释2

定义:

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

规则

原理 :

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

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

类型擦除

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

限制

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

你可能感兴趣的:(泛型)