六、JAVA基础--泛型
泛型方法:泛型方法可以放在普通類中,也可以定義在泛型類中。
<T extends 具體類或者接口> T為綁定類型的子類型;T和綁定類型可以是類,也可以是接口。
可以有多個限定類型,用‘&’分隔。也可以有多個類型變量,用逗號分隔。但是限定中至多只能有一個類,且該類必須放在第一個上。
虛擬機和泛型:
1)虛擬機是沒有泛型的,定義泛型類型的時候,會自動提供一個相對應的原始類型。擦除類型變量,并替換為第一個限定的類型變量。沒有給限定的變量就用Object。
2)返回類型,和存取泛型域都會強轉。
3)泛型方法的翻譯:采用橋方法,參考:http://jiangshuiy.iteye.com/blog/1339105
約束與局限性:
1)運行時類型查詢(instanceof)只適用于原始類型,不使用于泛型。
2)不能創建參數化類型的數組,因為數組會記住它的元素類型,不能存儲其他類型的元素,但是泛型擦除會打破這個規則。所以不能穿件泛型數組。
3)不能在靜態域或者方法里使用泛型。
4)不能拋出或者捕獲泛型類的實例。catch中不能使用類型變量。
5)注意擦除后的沖突
泛型的繼承規則
1)ArrayList<Manager>和ArrayList<Employee>沒有任何關系,是相對獨立的。
2)子類限定通配符:<? extends 超類> 類型Pair<Manager>是Pair<? extends Employee>的子類
3)超類限定通配符:<? super Manager>
4)無限定通配符: <?>?
轉載于:https://blog.51cto.com/cnslp/1918973
總結
以上是生活随笔為你收集整理的六、JAVA基础--泛型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 22.协议
- 下一篇: Andriod动态布局