一、泛型类
一个泛型类就是具有一个或多个类型变量的类。例子:
public class Pair<T>
{
public Pair(){
first = null; second = null;
}
public Pair(T first, T second){
this.first = first;
this.second = second;
}
public T getFirst(){
return first;
}
public T getSecond(){
return second;
}
public void setFirst(T newValue){
first = newValue;
}
public void setSecond(T newValue){
second = newValue;
}
private T first;
private T second;
}
T是类型变量,用尖括号括起来,放在雷蒙德后面跟。泛型类可以有多个类型变量。
public class Pair<T, U>{...}
类定义中的类型变量指定方法的返回类型以及域和局部变量的类型。
private class first<T, S, U>{...}
变量E表示集合的元素类型,K和V分别表示关键字与值的类型。T(需要时还可以用临近的字母U和S)表示任意类型。
用具体的类型替换类型类型变量就可以实例化泛型类型,例如
new Pair<String>()
构造函数相当于变成这样
Pair<String>(String)
Pair<String>(String, String)
T被替换成了其他类
二、泛型方法
class ArrayAlg
{
public static <T> T getMiddle(T[] a)
{
return a[a.length/2];
}
}
注意:类型变量放在修饰符的后面,返回类型的前面。
三、类型变量的限定
public static <T extends Comparable>T min(T[] a) ...
T将被限制为实现了Comparable接口,类型参数和后面的绑定类型可以是类也可以是接口,有多个限定类型可以使用&分隔绑定类型变量。限定类型列表中之多有一个类,且必须放在第一位,