--------------------- android培訓、java培訓、期待與您交流! ----------------------泛型Generic中的術語
泛型是JDK1.5版本之後的新特性,用來給某個類型加入特定的參數,如:
ArrayList<String>,這樣一來,集合ArrayList裡面只能加入String類型的對象。
1.術語解釋:
ArrayList<E> 泛型型別,這裡的E稱為型別參數或類型變數
ArrayList<String>參數化類別型(parametered type)
ArrayList 原始類型
註:
1' 參數化型別與原始類型相容
ArrayList list = new ArrayList<String>();
2' 參數化型別中的型別參數不考慮繼承關係
ArrayList<Object> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<Object>();
這兩句都是錯的。
3' 數組元素不能使用參數化型別
2.?萬用字元
Collection<?> 說明可以引用任意集合參數化類別型。但是不能調用與參數有關的方法,因為並不知道是什麼參數。
Collection<? extends T> 限定萬用字元上界,參數必須是T或T的子類(限定萬用字元總是包括自己)
Collection<? super T> 限定萬用字元下界,參數必須是T或T的父類
3.自訂泛型方法
在傳回值之前說明泛型參數<T>,整個方法中都可以使用這個T,如:
private static <T> void swap(T[] a,int i,int j)
{
T tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
這個方法完成對任意數組中兩個位置相交換。泛型方法具有類型推斷的複雜演算法,當使用泛型方法時,傳入的參數有多個類型時,將通過這種演算法來確定泛型參數。最簡單的規則是以傳回型別優先,如果是void則把傳入參數類型的交集作為泛型的參數。
4.自訂泛型類
在類定義中,類名後定義泛型參數<T>,那麼整個類中的成員都可以使用這個參數T作為一個類型。如:
class Person <T>
{
public void add(T obj)
{...}
}
注意,類中的靜態方法不能用泛型參數T,因為沒有對象之前,並不知道這個T是什麼。
----------------------android培訓、java培訓、期待與您交流! ----------------------詳細請查看:http://edu.csdn.net/heima