2. 泛型进阶¶
2.1. 学习目标¶
完成本模块后,学生将能够:
判断泛型何时需要限定(bounded)
编写并使用带限定泛型参数的方法和类
编写并使用受限的泛型方法
熟悉通配符的语法
2.1.1. 建议阅读:¶
第 8 篇 Java 插曲:再谈泛型(Generics Once Again) ,选自 Data Structures and Abstractions with Java, 4th edition by Frank M. Carrano and Timothy Henry
2.2. 互动:泛型进阶¶
跟着做、练习与探索
从视频中下载相应的项目,在自己的 eclipse 中自行运行和探索。上面的示例项目需要 CS2-Support 项目。它也会在你的课程项目中使用。要下载 CS2-Support,你必须先完成第一次实验的配置步骤。之后你就能够通过 eclipse 使用蓝色向下箭头图标,或通过项目菜单并选择“Download Assignment...”来下载它。
2.3. 互动:反思泛型¶
2.3.1. 相关资源¶
2.4. 泛型方法声明示例详解¶
声明泛型方法的格式如下:
methodModifiers <genericParameters> returnType methodName(methodParameters)
注意位于尖括号内的泛型参数。
示例 1
下面举例说明如何声明一个泛型方法。
public static <T> void sort(T[] items, Comparator<? super T> comp)
static 关键字之后、用尖括号括起来的 T 表示 sort 方法的泛型参数。T 也应该出现在方法参数列表中。
第二个方法参数 Comparator<? super T> comp 是我们的方式,
用来指明 comp 必须是实现了 Comparator 接口的对象,
且该接口针对类型 T 或类型 T 的某个超类。
我们使用这种方法来指定限制,例如,你可以定义一个实现
Comparator<Number> 的类,并用它对 Integer 对象数组或 Double 对象数组进行排序。
示例 2
下面是另一个泛型方法声明示例。
public static <T extends Comparable<T>> void sort(List<T> list)
使用 <T extends Comparable<T>> 表示泛型参数 T 必须实现接口 Comparable<T> 。
方法参数列表(即被排序的对象)的类型是 List<T> 。
2.5. 检查点 1¶
2.6. 互动:受限通配符示例¶
跟着做、练习与探索
从视频中下载相应的项目,在自己的 eclipse 中自行运行和探索。上面的示例项目需要 CS2-Support 项目。它也会在你的课程项目中使用。要下载 CS2-Support,你必须先完成第一次实验的配置步骤。之后你就能够通过 eclipse 使用蓝色向下箭头图标,或通过项目菜单并选择“Download Assignment...”来下载它。
