10.1. 泛型的更多知识¶
10.1.1. 目标¶
完成本模块后,学生将能够:
确定何时需要为泛型设置界限
编写并使用使用界限泛型参数的方法和类
编写并使用界限泛型方法
熟悉通配符的语法
10.1.1.1. 建议阅读:¶
Java 插曲 8 泛型再探 摘自 Data Structures and Abstractions with Java, 4th edition by Frank M. Carrano and Timothy Henry
10.1.2. 交互式:泛型更多内容 [10:53]¶
Follow Along, Practice and Explore
在 Eclipse 中,使用 Project > Download Assignment... 菜单命令下载名为"ex10.01-Generics"的练习项目。使用此示例跟随下面的视频。请随意进行实验。
若需要回顾下载 Eclipse 项目的说明,请参阅 01.02: Lab: LightBot for Beginners。
10.1.3. 反思泛型 [17:26]¶
10.1.3.1. 相关资源¶
10.1.4. 泛型方法的示例声明解析¶
声明泛型方法的格式如下:
methodModifiers <genericParameters> returnType methodName(methodParameters)
注意放在尖括号内的泛型参数。
示例 1
以下是您声明泛型方法的一个示例。
public static <T> void sort(T[] items, Comparator<? super T> comp)
静态关键字之后的、位于尖括号内的 T 代表排序方法的泛型参数。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> 。
10.1.5. 检查点 1¶
10.1.6. 交互式:有界通配符示例¶
Follow Along, Practice and Explore
在 Eclipse 中,使用 项目 > 下载作业... 菜单命令下载名为"ex10.01-Generics"的作业项目。使用此示例跟随以下视频。可以随意尝试。
如需要回顾下载 Eclipse 项目的说明,请参阅 01.02: Lab: LightBot for Beginners。
