更新時間:2020-08-18 16:22:49 來源:動力節點 瀏覽2358次
1.泛型的局限
任何基本類型不能作為類型參數
經過類型擦除后,List中包含的實際上還是Object的域,而在Java類型系統中Object和基本類型是兩套體系,需要通過“自動裝包、拆包機制”來進行交互。
2. 任何在運行時需要知道確切類型信息的操作都無法工作。
由于Java的泛型是編譯期泛型(在進入運行時后沒有泛型的概念),因此運行時的類型轉換和類型判定等操作都沒有效果。
3. 沖突1:方法名一樣,參數列表是同一個類型參數的兩個泛型方法,重載將產生相同的函數簽名;
在泛型擦除后,這兩個方法簽名完全相同,產生沖突;
4. 沖突2:使用泛型接口時,需要避免重復實現同一個接口
IDEA編輯器給出所示——“Payable不能被不同的類型參數繼承,即不能重復實現同一個接口”
5. 不能在靜態域或方法中引用類型參數
這個例子跟問題2基本相同,唯一是在方法的簽名里多了一個static關鍵字,然后引發編譯錯誤的原因就變成了:在靜態域中無法引用類型變量
泛型的常用經驗
盡量消除異常,初學者容易寫出使用原生類型的代碼,或者使用泛型不當的代碼,現在編輯器非常先進,盡量消除提示的異常;對于開發者自己確認不需要消除切可以工作的代碼,可以使用 SuppressWarnings("unchecked")屏蔽掉異常;
能用泛型類(或接口)的時候盡量使用;能用泛型方法的時候盡量使用泛型方法;
定義API時,盡量使用泛型;
4.編寫基礎工具類時,盡量使用泛型;
例子1:通用的返回值對象
例子2:緩存操作工具類
以上就是動力節點java培訓機構的小編針對“Java泛型的局限和使用”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習