一、泛型类
一个泛型类(generic class)就是具有一个或者多个类型变量的类,类型变量用尖括号(<>)括起来,并放在类名的后面。泛型类可以有多个类型变量。类型变量使用大写形式,而且比较短。在Java类库中使用变量E表示集合元素类型,K表示关键字类型,V表示值的类型,T表示任意类型。
举例说明如下:
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;
}
测试如下:
public class PairTest1
{
public static void main(String[] args)
{
**//这里mm的类型必须设置为Pair<String>,而不可以为Pair<T>**
Pair<String> mm = new Pair<String>("a", "b");
System.out.println("min = " + mm.getFirst());
System.out.println("max = " + mm.getSecond());
}
}
二、泛型方法
泛型方法可以在普通类中定义,也可以在泛型类中定义。需要注意的是,类型变量放在修饰符的后面,返回类型的前面。
举例如下:
public class GenericMethodTest {
private < T > T getMiddle( T[] arr ) {
return arr[ arr.length / 2 ];
}
public static void main( String[] args ) {
String[] ss = new String[]{ "a", "b", "c" };
String middle = new GenericMethodTest().getMiddle( ss );
System.out.println( middle ); // 输出:b
}
}