2.泛型類和泛型方法
阿新 • • 發佈:2018-12-31
1.定義簡單泛型類:
public class Pair<T> {
private first;
private 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; }
}
這是有多個型別變數的泛型類:
public class Pair<T,U> {...}
建立泛型類的物件
Pair a = new Pair<String>();
2.定義泛型方法
(T…a並不是省略的意思,而是可變長度引數列表,表示此處接受的引數為0到多個Object型別的物件,或者是一個Object[])
class ArrayAlg {
public static<T> T getMiddle(T...a) {
return a[a.length/2];
}
}
型別變數應該放在修飾符(public static)的後面,返回值型別T前面
此外,要想知道編譯器對一個泛型方法呼叫最終推斷出哪種型別,可以有目的的引入一個錯誤,如:
public class Generic_3_Function {
public static void main(String[] args) {
JButton btn = ArrayAlg.getMiddle("Hello" ,0,null);
}
}
會得到以上錯誤,意思是getMiddle在通過String,int,null所推斷出來的共同父類是Object、Serializable和Comparable,可以將結果賦給他們
注:本文為《Java 核心技術 卷I》讀書筆記及個人理解解釋