java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
一、定义:
本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候再指定为具体的类型。
java语言中的泛型只在源码中存在,在编译后的字节码文件中就已经被替换为原始类型,并在相应的地方插入强制转型代码。所以说泛型技术实际上是Java语言的一颗语法糖,Java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型被称为伪泛型。
二、泛型的使用
1、泛型的参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。
变量E表示集合的元素类型,K和V分别表示关键字与值的类型,U、S表示“任意类型”
2、泛型变量的类型限定:
a、不管限定是类还是接口,统一都使用关键字 extends
b、可以使用&符号给出多个限定
c、如果限定既有接口也有类,那么类必须只有一个,并且放在首位置
三、泛型的好处
简单易用
消除强制类型转换
保证类型安全,编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率