目錄
- 一、定義
- 二、使用語法
- 三、注意事項
- 四、從泛型類派生子類
- 情況一
- 情況二
- 五、泛型介面
- 語法
- 介面的使用
一、定義
class 類名<泛型標識1,泛型標識2,…>{
private 泛型標識1 變數名;
}
常用的泛型標識: T,E,K,V
二、使用語法
類名<具體的資料型別> 物件名 = new 類名<具體的資料型別>();
// 在java7以後,後面的<>中具體的資料型別可以省略不寫
類名<具體的資料型別> 物件名 = new 類名<>();
泛型的本質是引數化型別,也就是具體的資料型別被指定為一個引數
三、注意事項
- 泛型在建立物件時,沒有指定泛型類,將按照Object型別進行操作
- 泛型不支援基本型別,原因是編譯期間會將泛型標識編譯成Object型別
- 統一泛型,根據不同的資料型別建立的物件,本質上是同一型別
四、從泛型類派生子類
-
情況一
如果一個類的父類是一個泛型類的話,那麼這個類的泛型引數需要和父類的泛型引數保持一致,並且在extends的時候,父類的泛型引數可以不寫,如果父類沒有指明泛型型別按照Object型別處理
-
情況二
子類不是泛型類時,父類的泛型型別必須得指明,如果父類不指明就按照Object型別處理
五、泛型介面
-
語法
interface 介面名 <泛型標識1,...>{
泛型標識1 方法名;
泛型標識1 變數名;
}
-
介面的使用
- 實現類如果不是泛型,介面型別必須要明確,如果介面沒有明確泛型型別,那麼就按照Object型別處理
- 實現類是泛型,泛型形參必須與介面的泛型形參一致,如果父類沒有指明泛型型別,則按照Object型別處理