Java泛型
什么是泛型:
泛型本质是参数化类型,解决不确定对象具体类型的问题。泛型在定义处只具备执行 Object 方法的能力。
泛型的好处:
-
类型安全,放置什么出来就是什么,不存在 ClassCastException
-
提升可读性,编码阶段就显式知道泛型集合、泛型方法等处理的对象类型
-
代码重用,合并了同类型的处理代码。
泛型擦除是什么:
-
泛型用于编译阶段,编译后的字节码文件不包含泛型类型信息(所有的泛型都会被擦除),因为虚拟机没有泛型类型对象,所有对象都属于普通类。
例如定义 List -
定义一个泛型类型,会自动提供一个对应原始类型,类型变量会被擦除
如果没有限定类型就会替换为 Object,如果有限定类型就会替换为第一个限定类型
例如 <T extends A & B> 会使用 A 类型替换 T