“核心技术:泛型”的版本间差异
跳到导航
跳到搜索
(→泛型方法) |
|||
第36行: | 第36行: | ||
== 泛型变量的限定 == | == 泛型变量的限定 == | ||
是将T 限制为实现了Comparable 接口(只含一个方法compareTo 的标准接口)的类: | |||
<syntaxhighlight lang="java"> | |||
public static <T extends Coiparab1e> T min(T[] a) . . . | |||
</syntaxhighlight> | |||
* 使用关键字extends 而不是implements | |||
* T 和绑定类型可以是类, 也可以是接口 | |||
* 一个类型变量或通配符可以有多个限定: | |||
*: <syntaxhighlight lang="java"> | |||
T extends Comparable & Serializable | |||
</syntaxhighlight> | |||
*: 限定类型用“&”分隔,而逗号用来分隔类型变量。 | |||
== 泛型代码和虚拟机 == | == 泛型代码和虚拟机 == |
2020年10月22日 (四) 12:38的版本
为什么要使用泛型
泛型程序设计(Generic programming) 意味着编写的代码可以被很多不同类型的对象所重用。
类型参数( type parameters )。ArrayList 类有一个类型参数用来指示元素的类型:
ArrayList<String> files = new ArrayList<String>();
- 在Java SE 7 及以后的版本中, 构造函数中可以省略泛型类型:
ArrayList<String> files = new ArrayList<>();
定义简单泛型类
一个泛型类( generic class ) 就是具有一个或多个类型变量的类。
- 换句话说,泛型类可看作普通类的工厂。
泛型方法
- 类型变量放在修饰符(这里是public static ) 的后面,返回类型的前面。
class ArrayAlg
{
public static <T> T getMiddle(T... a)
{
return a[a.length / 2];
}
}
泛型变量的限定
是将T 限制为实现了Comparable 接口(只含一个方法compareTo 的标准接口)的类:
public static <T extends Coiparab1e> T min(T[] a) . . .
- 使用关键字extends 而不是implements
- T 和绑定类型可以是类, 也可以是接口
- 一个类型变量或通配符可以有多个限定:
T extends Comparable & Serializable
- 限定类型用“&”分隔,而逗号用来分隔类型变量。