天天看點

泛型

泛型

需求:

定義一個集合存儲一批字元串,然後把字元串的元素轉換成大寫

  • 好處:
    1. 可以把運作時出現的問題,提前至編譯時。
    2. 避免了無畏的強制類型轉換
  • 注意事項
    1. 泛型中沒有多态的概念
    2. 左右兩邊的資料類型必須要一緻
    3. 或者隻寫一邊的泛型
  • 推薦使用
兩邊都寫上同樣資料類型的泛型

自定義的泛型:

可以了解為是一個資料類型的變量,或者是一個資料類型的占位符
  • 格式:

    修飾符 <聲明自定義泛型> 傳回值類型 函數名(形參清單)

  • 注意細節:
    1. 函數上自定義泛型的具體資料類型是在調用該函數的時候,傳遞實參資料的時候确定具體的資料類型的
    2. 泛型中是不能使用基本資料類型資料的,如果需要使用基本資料類型資料,那麼就要使用基本資料類型對應的包裝類型
      float-----> Float
      double----> Double
      char------> Character
      boolean---> Boolean
      byte------> Byte
      short-----> Short
      long------> Long```
                 
    3. 自定義泛型使用的辨別符可以自定義的,隻要符合辨別符的命名規則即可。但是一般自定義泛型使用的辨別符都是單個大寫字母(T E)

自定義泛型類:

class 類名<T>{}
           
  • 泛型類要注意的事項:
    1. 類上聲明的自定義泛型的具體資料類型是在使用該類建立對象的時候确定下來的
    2. 如果一個類已經聲明了自定義泛型,該類在建立對象的時候沒有指定自定義泛型的具體資料類型,那麼則預設為Object資料類型
    3. 靜态大方法不能使用類上聲明的自定義泛型,如果需要使用自定義泛型就必須在自己的方法 上聲明

泛型接口:

  • 定義格式:
interface 接口名 <聲明自定義的泛型>{}
           
  • 注意的細節:

    1. 接口上自定義泛型的具體資料類型是實作該接口的時候确定的

    2. 如果一個接口已經自定義了泛型,那麼在實作類的時候,沒有指定自定義泛型的具體資料類型,那麼預設為Object資料類型

泛型的上下限:

  • 需求1:
定義一個方法,可以接受任意類型的集合對象,接受的集合對象隻能存儲Integer以及Integer父類類型的資料
  • 需求2:
定義一個方法,可以接受任意類型的集合對象,接受的集合對象隻能存儲Number以及Number子類類型的資料
  • 泛型的通配符:?
需求1:
? super Integer (泛型的下限) 隻能用于Integer或者是Integer的父類
需求2:
? extends Number (泛型的上限) 隻能用于Number或者是Number的子類