java程序设计开发,泛型-泛型的类型擦除学习笔记,泛型是编译期特性,编译器会在编译时移除所有泛型类型信息(类型参数),并在必要时插入类型转换,使代码在运行时与普通非泛型代码行为一致。
Java 程序设计开发:泛型的类型擦除学习笔记
一、类型擦除(Type Erasure)核心概念
定义:
泛型是编译期特性,编译器会在编译时移除所有泛型类型信息(类型参数),并在必要时插入类型转换,使代码在运行时与普通非泛型代码行为一致。
目的:

- 保持与旧版本 Java(JDK 1.5 前)的兼容性。
- 减少运行时内存开销,泛型类型信息仅在编译期有效。
二、类型擦除的核心机制
1. 擦除规则
- 无界类型参数(如
<T>):擦除为Object。 - 有界类型参数(如
<T extends Number>):擦除为上限类型(Number)。 - 通配符类型(如
? extends T/? super T):擦除为上限或下限的边界类型。
2. 编译期 vs 运行时
| 阶段 | 泛型类型状态 | 示例(List<String> list = new ArrayList<>();) |
|---|---|---|
| 编译期 | 存在具体类型参数(String) |
编译 |

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



