Java泛型高级特性:子类型化与通配符
1. Java泛型基础回顾
在深入探讨子类型化和通配符之前,我们先来回顾一些Java泛型的基础知识。
1.1 泛型与模板
Java泛型和C++模板有相似之处,但也存在显著差异,主要体现在语法和语义上。
- 语法方面 :Java和C++都使用尖括号来表示泛型类型,但C++在嵌套参数时需要额外的空格,例如 List< List<String> > ,而Java则不需要,可写成 List<List<String>> 。
- 语义方面 :Java泛型通过擦除来定义,C++模板通过扩展来定义。在C++中,每个新类型的模板实例都会单独编译,可能导致代码膨胀;而Java无论使用多少种类型的列表,都只有一个版本的代码。
下面是两者差异的对比表格:
| 对比项 | Java泛型 | C++模板 |
| ---- | ---- | ---- |
| 语法 | 尖括号,嵌套无需额外空格 | 尖括号,嵌套需额外空格 |
| 语义 | 擦除定义,无代码膨胀 | 扩展定义,可能代码膨胀 |
1.2 装箱和拆箱
Java中的类型分为引用类型和基本类型。基本类型有对应的引用类型库类,基本类型到对应引用类型的转换称为装箱,反之则称为拆箱。
以下是基本类型及其对应的引用类型:
| 基本类型 | 引用类型 |
| ---- | --
超级会员免费看
订阅专栏 解锁全文
1042

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



