一個泛型類就是有一個或多個類型變量的類。
一般的類和方法,隻能使用具體的類型(基本類型或者自定義類型)。如果要編譯應用於多種類型的代碼就要引入泛型瞭。
例12-1使用Pair類。靜態方法minmax遍歷數組同時計算出最小值和最大值。用一個Pair返回兩個結果
[java]
package core.pair_12_1;
public class PairTest1 {
public static void main(String[] args) {
String[] words = {"Mary", "had", "a", "little", "lamb"};
Pair<String> mm = ArrayAlg.minmax(words);
System.out.println("min = " + mm.getFirst());
System.out.println("max = " + mm.getSecond());
}
}
class ArrayAlg {
public static Pair<String> minmax(String[] a) {
// TODO Auto-generated method stub
if (a == null || a.length == 0)
return null;
String min = a[0];
String max = a[0];
for (int i = 1; i < a.length; i++) {
if (min.compareTo(a[i]) > 0)
min = a[i];
if (max.compareTo(a[i]) < 0)
max = a[i];
}
return new Pair<String>(min, max);
}
}
class Pair<T> {
private T first;
private T second;
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;
}
}
12.3泛型方法
泛型方法可以定義在泛型類中也可以定義在普通類中:
public static <T> getMiddle(T[] a) {
return a[a.length / 2];
}
註意,類型變量<T>放在修飾符(這裡是public static)後面,返回類型的前面。