黑馬程式員-泛型Generic

來源:互聯網
上載者:User

--------------------- 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.