Day34泛型

泛型

什么是泛型

在这里插入图片描述在这里插入图片描述
泛型:

  1. 编译期间检查类型
  2. 建设了数据类型转换
    在这里插入图片描述
不采用泛型可能造成ClassCastException

在这里插入图片描述
在这里插入图片描述
通过强制转换并不能解决。

泛型类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 泛型类在创建对象的时候,来指定操作的具体操作类型。
  2. 泛型类在创建对象的时候,没有指定类型,将按照Object类型操作
  3. 泛型类,不支持基本数据类型
  4. 同一泛型类,根据不同的数据类型创建的对象,本质上都是同一类型

泛型类派生子类

在这里插入图片描述

泛型接口

在这里插入图片描述
在这里插入图片描述

泛型方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
能够用泛型方法解决的就不要用泛型类!(因为泛型方法更灵活)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

类型通配符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TreeSet可以传父类的比较器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类型擦除

在这里插入图片描述

无限制类型擦除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有限制类型擦除

按照上限类型 进行类型擦除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

擦除方法中的类型定义的参数

在这里插入图片描述

桥接方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

泛型与数组

在这里插入图片描述
不能创建带数组的泛型对象

  1. 编译器在编译的时候会做类型擦除,数组会在整个编译器持有它初始的数据类型
  2. 在设计上就是冲突的
    在这里插入图片描述
    可以这样创建
    在这里插入图片描述
    可能发生ClassCastException报错
    在这里插入图片描述
    所以最好不要暴露原生数组对象
    在这里插入图片描述
    如此创建数组
    泛型类型去创建一个数组引用 对象不采用泛,创建一个原生数组对象去赋给数组引用。
    在这里插入图片描述
    在这里插入图片描述我们不知道T的数据类型,无法new出对象,导致报错。
通过java.lang.reflect.Array的newInstance创建数组

newInstance(Class,int)
在这里插入图片描述
在这里插入图片描述
建议:尽量不要使用泛型数组,用泛型集合代替

泛型与反射

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

  1. 泛型在面对对象编程和设计模式运用比较广泛
  2. 注意泛型类跟泛型方法的区别
  3. 类型通配符? 是一个实参
  4. 泛型只保持在编译器,编译完成将被擦除(大多是Object,又上限则为上限类型)
  5. 两种方式:
    一:创建一个泛型数组的引用然后创建一个非泛型的对象
    二:借助Array的newInstance创建
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值