一般的類和方法,只能使用具體的類型,要麼是基礎數據類型,要麼是自定義類。
如果要編寫可以應用與多種類型的代碼,這種刻板的限制對代碼的束縛就會很大。

泛型的字面概念:
適合用於許多類型。
在面向對象中,多態算是一種泛化機制。
泛型的使用例子:
在如圖的例子中T就是類型參數

當你創建Holder對象時,必須指明想持有什麼類型的對象,將其置於尖括號內,就像main()中那樣。然後,你就只能在Holder中存入該類型(或其子類,以為多態與泛型不衝突)的對象了。並且,在你從Holder中取出它持有的對象時,自動地就是正確的類型。
java泛型核心概念:
告訴編譯器想要什麼類型,讓後編譯器幫你處理一切細節。
一般而言,你可以認為泛型與其他的類型差不多,只不過他們碰巧有參數罷了。
Java泛型中的標記符含義:
E – Element (在集合中使用,因為集合中存放的是元素)
T – Type(Java 類)
K – Key(鍵)
V – Value(值)
N – Number(數值類型)
? – 表示不確定的java類型
S、U、V – 2nd、3rd、4th types
使用泛型遇到的問題
1.任何基礎數據類型都不能作為類型參數:
學習泛型你會發現,Java泛型的限制之一,不能間基礎數據類型用作類型參數。
2.事項參數化接口:
一個類不能同時實現同一個泛型接口的兩種變體,由於擦除的原因,這兩個變體會成為相同的接口。
3.轉型和警告
使用帶有泛型類型參數的轉型或instanceof不會有任何效果。
4.重載
有與擦除的原因,重載方法將產生相同的類型簽名。
5.基類劫持了接口

Java中使用泛型最吸引人的地方就是在容器類中,包括List,各種Set,各種Map。
泛型優點:
當一個對象被放置在容器中時,這個對象會北向上轉型為Object,因此你會丟失類型信息。java如果類型放置錯誤導致取出的時候會進行強制類型轉換,會得到一個RuntimeException,雖然你能發現問題,當時是在運行時發現的而非在編譯發現它的。引入泛型並不會讓你誤用放入容器中的對象。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/273157.html