首页 > 代码库 > java小知识点6

java小知识点6

使用泛型机制编写的代码,要比那些杂乱的使用Object类型的变量,在进行强制类型转换的代码有更好的安全性和可读性。

泛型类:

技术分享

类型变量T放在类名之后,用<>,泛型类可以看做普通类的工厂。

泛型方法:

技术分享

泛型放在修饰符的后面,返回类型的前面。

技术分享

泛型类型变量的限定:

技术分享

技术分享

技术分享

 

无论合适定义了一个泛型类型,都自动提供过了一个相应的原始类型擦除类型变量,替换为限定类型(无限定为Object)

编译器自动插入强制类型抓换。

约束:

  • 不能使用基本类型实例化泛型参数
  • 运行时类型查询只适用于原始类型(a instanceof Pair<String>  -> false)
  • 不能创建参数化类型的数组
  • 不能实例化类型变量(new T())
  • 不能在静态域或者方法中引用类型变量
  • 不能抛出或者捕获泛型类的实例

技术分享

两个类有继承关系,泛型类没有联系

通配符类型:

技术分享

技术分享

通配符还可以指定一个超类型限定:? super Manager

带有超类型限定的通配符可以向泛型对象写入,带有子类型限定的通配符可以从泛型类型读取。

 

java小知识点6