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