1. 程式人生 > >java小知識點6

java小知識點6

參數化 類型轉換 spa mage 普通 ron nag 子類 ges

使用泛型機制編寫的代碼,要比那些雜亂的使用Object類型的變量,在進行強制類型轉換的代碼有更好的安全性和可讀性。

泛型類:

技術分享

類型變量T放在類名之後,用<>,泛型類可以看做普通類的工廠。

泛型方法:

技術分享

泛型放在修飾符的後面,返回類型的前面。

技術分享

泛型類型變量的限定:

技術分享

技術分享

技術分享

無論合適定義了一個泛型類型,都自動提供過了一個相應的原始類型擦除類型變量,替換為限定類型(無限定為Object)

編譯器自動插入強制類型抓換。

約束:

  • 不能使用基本類型實例化泛型參數
  • 運行時類型查詢只適用於原始類型(a instanceof Pair<String> -> false)
  • 不能創建參數化類型的數組
  • 不能實例化類型變量(new T())
  • 不能在靜態域或者方法中引用類型變量
  • 不能拋出或者捕獲泛型類的實例

技術分享

兩個類有繼承關系,泛型類沒有聯系

通配符類型:

技術分享

技術分享

通配符還可以指定一個超類型限定:? super Manager

帶有超類型限定的通配符可以向泛型對象寫入,帶有子類型限定的通配符可以從泛型類型讀取。

java小知識點6