您好,登錄后才能下訂單哦!
本篇內容主要講解“java7簡化變參方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java7簡化變參方法是什么”吧!
這是所有修改里最簡單的一個,只是去掉了方法簽名中同時出現變參和泛型時才會出現的類型警告信息。
public static <T> Collection<T> doSomething(T... entries) { ...}
還在?很好。這到底是怎么回事?
變參方法是指參數列表末尾是數量不定但類型相同的參數方法。但你可能還不知道變參方法是如何實現的。基本上,所有出現在末尾的變參都會被放到一個數組中(由編譯器自動創建),并作為一個參數傳入。
這是個好主意,但是存在一個公認的Java泛型缺陷——不允許創建已知類型的泛型數組。比如下面這段代碼,編譯就無法通過:
HashMap<String, String>[] arrayHm = new HashMap<>[2];
不可以創建特定泛型的數組,只能這樣寫:
HashMap<String, String>[] warnHm = new HashMap[2];
可這樣編譯器會給出一個只能忽略的警告。你可以將warnHm的類型定義為HashMap<String,String>數組,但不能創建這個類型的實例,所以你不得不硬著頭皮(或至少忘掉警告)硬生生地把原始類型(HashMap數組)的實例塞給warnHm。
這兩個特性(編譯時生成數組的變參方法和已知泛型數組不能是可實例化類型)碰到一起時,會令人有點頭疼。看看下面這段代碼:
HashMap<String, String> hm1 = new HashMap<>();HashMap<String, String> hm2 = new HashMapCollection<HashMap<String, String>> coll = doSomething(hm1,hm2);
編譯器會嘗試創建一個包含hm1和hm2的數組,但這種類型的數組應該是被嚴格禁止使用的。面對這種進退兩難的局面,編譯器只好違心地創建一個本來不應出現的泛型數組實例,但它又覺得自己不能保持沉默,所以還得嘟囔著警告你這是“未經檢查或不安全的操作”。
從類型系統的角度看,這非常合理。但可憐的開發人員本想使用一個十分靠譜的API,一看到這些嚇人的警告,卻得不到任何解釋,不免會內心忐忑。
到此,相信大家對“java7簡化變參方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。