Java 类型擦除(九)

Java 类型擦除(九)_第1张图片

关于类中泛型擦除

泛型 擦除简单案例说明

Java 类型擦除(九)_第2张图片
虽然在编译阶段,我们一个可以采用Integer泛型,一个采用String类型,但是在编译完后泛型信息都被擦除掉了,所以如运行结果所示:本质上类型是一样的。

无限制类型擦除

无限制类型擦除案例说明
Java 类型擦除(九)_第3张图片

定义泛型类

Java 类型擦除(九)_第4张图片
Java 类型擦除(九)_第5张图片

有限制类型擦除

真正在生成字节码文件过程中,T转换为了Number类型,也就是说它的上限类型
Java 类型擦除(九)_第6张图片

有限制类型擦除案例说明

Java 类型擦除(九)_第7张图片
Java 类型擦除(九)_第8张图片
运行后打印结果是 key:Number,也就是说把T转换为了Number类型,也就是说它的上限类型来擦除

以上不管是有限制还是无限制类型擦除都是针对类的类型擦除,下面讲下针对方法中类型的擦除

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

Java 类型擦除(九)_第9张图片

案例说明

Java 类型擦除(九)_第10张图片
Java 类型擦除(九)_第11张图片
扩展:在类型擦除的过程中还有一种情况叫做桥接方法

桥接方法

桥接方法其实和接口有很大的关系,桥接方法是编译器替我们去做的
Java 类型擦除(九)_第12张图片
Java 类型擦除(九)_第13张图片

你可能感兴趣的:(Java语言学习,java)