1. 程式人生 > >關於Java泛型你應該知道的二三事

關於Java泛型你應該知道的二三事

在Java程式設計中,泛型無處不在!既然避不開,那最好多瞭解點。
泛型是什麼?
“泛型” 這個術語的意思是 “使用許多許多的型別”
使用泛型的好處?
1、寫出更通用的程式碼2、寫出更安全的程式碼3、寫出更簡潔的程式碼
泛型介面/類

泛型方法

使用邊界實現具體方法呼叫
協變與逆變
協變
逆變

PECS原則
java泛型的缺陷
泛型程式碼內部無法獲取獲取泛型引數型別的實際型別

想通過T來new出一個例項物件 、陣列 和判斷型別都是辦不到的!
擦除機制


為什麼會出現上面程式碼的問題,這是因為java泛型的擦除機制,其實就是語法糖!從上面位元組碼指令可以看出List 範型在編譯的時候就被擦除 add方法接收的還是 java/lang/Object; 只是編譯器幫我們在取的時候通過checkcast做了強轉。
如何彌補擦除機制的不足?
1、型別標籤

通過繫結型別標籤Class<T> ,我們可以得到T的例項物件
2、一種特例


上面這種父類的泛型的型別資訊不會被擦除3、反射

針對上面說的特例我們可以用反射來獲取父類的泛型的真實型別資訊