java中的泛型

ning12發表於2024-06-02

目錄
  • 一、定義
  • 二、使用語法
  • 三、注意事項
  • 四、從泛型類派生子類
    • 情況一
    • 情況二
  • 五、泛型介面
    • 語法
    • 介面的使用

一、定義

class 類名<泛型標識1,泛型標識2,…>{
	private 泛型標識1 變數名;
}

常用的泛型標識: T,E,K,V

二、使用語法

類名<具體的資料型別> 物件名 = new 類名<具體的資料型別>();
// 在java7以後,後面的<>中具體的資料型別可以省略不寫
類名<具體的資料型別> 物件名 = new 類名<>();

泛型的本質是引數化型別,也就是具體的資料型別被指定為一個引數

三、注意事項

  1. 泛型在建立物件時,沒有指定泛型類,將按照Object型別進行操作
  2. 泛型不支援基本型別,原因是編譯期間會將泛型標識編譯成Object型別
  3. 統一泛型,根據不同的資料型別建立的物件,本質上是同一型別

四、從泛型類派生子類

  • 情況一

如果一個類的父類是一個泛型類的話,那麼這個類的泛型引數需要和父類的泛型引數保持一致,並且在extends的時候,父類的泛型引數可以不寫,如果父類沒有指明泛型型別按照Object型別處理

  • 情況二

子類不是泛型類時,父類的泛型型別必須得指明,如果父類不指明就按照Object型別處理

五、泛型介面

  • 語法

interface 介面名 <泛型標識1,...>{
    泛型標識1 方法名;
    泛型標識1 變數名;
}
  • 介面的使用

    1. 實現類如果不是泛型,介面型別必須要明確,如果介面沒有明確泛型型別,那麼就按照Object型別處理
    2. 實現類是泛型,泛型形參必須與介面的泛型形參一致,如果父類沒有指明泛型型別,則按照Object型別處理

相關文章