软件设计与数据结构

Chapter 9 Lists and Generics

| 关于   «  1. 线性表   ::   目录   ::   3. 实验 9 单链表  »

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...”来下载它。

exGenerics.zip
MoreOnGenerics.pdf

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...”来下载它。

exGenerics.zip

2.6.1. 相关资源

2.7. 编程实践:Generics 1

   «  1. 线性表   ::   目录   ::   3. 实验 9 单链表  »

关闭窗口