Java泛型的局限和使用

Java泛型的局限和使用

北大青鳥長沙麓谷校區(qū)      2022-03-15 09:00:01     11

Java泛型的局限和使用,1.泛型的局限任何基本類型不能作為類型參數(shù)經(jīng)過類型擦除后,List中包含的實(shí)際上還是Object的域,而在Java類型系統(tǒng)中Object和基本

課程價(jià)格 請咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

1.泛型的局限

任何基本類型不能作為類型參數(shù)

經(jīng)過類型擦除后,List中包含的實(shí)際上還是Object的域,而在Java類型系統(tǒng)中Object和基本類型是兩套體系,需要通過“自動(dòng)裝包、拆包機(jī)制”來進(jìn)行交互。

2. 任何在運(yùn)行時(shí)需要知道確切類型信息的操作都無法工作。

由于Java的泛型是編譯期泛型(在進(jìn)入運(yùn)行時(shí)后沒有泛型的概念),因此運(yùn)行時(shí)的類型轉(zhuǎn)換和類型判定等操作都沒有效果。

3. 沖突1:方法名一樣,參數(shù)列表是同一個(gè)類型參數(shù)的兩個(gè)泛型方法,重載將產(chǎn)生相同的函數(shù)簽名;

在泛型擦除后,這兩個(gè)方法簽名完全相同,產(chǎn)生沖突;

4. 沖突2:使用泛型接口時(shí),需要避免重復(fù)實(shí)現(xiàn)同一個(gè)接口

IDEA編輯器給出所示——“Payable不能被不同的類型參數(shù)繼承,即不能重復(fù)實(shí)現(xiàn)同一個(gè)接口”

5. 不能在靜態(tài)域或方法中引用類型參數(shù)

這個(gè)例子跟問題2基本相同,唯一是在方法的簽名里多了一個(gè)static關(guān)鍵字,然后引發(fā)編譯錯(cuò)誤的原因就變成了:在靜態(tài)域中無法引用類型變量

泛型的常用經(jīng)驗(yàn)

盡量消除異常,初學(xué)者容易寫出使用原生類型的代碼,或者使用泛型不當(dāng)?shù)拇a,現(xiàn)在編輯器非常先進(jìn),盡量消除提示的異常;對(duì)于開發(fā)者自己確認(rèn)不需要消除切可以工作的代碼,可以使用 SuppressWarnings("unchecked")屏蔽掉異常;

能用泛型類(或接口)的時(shí)候盡量使用;能用泛型方法的時(shí)候盡量使用泛型方法;

定義API時(shí),盡量使用泛型;

4.編寫基礎(chǔ)工具類時(shí),盡量使用泛型;

例子1:通用的返回值對(duì)象

例子2:緩存操作工具類

以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java泛型的局限和使用”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。