91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java7 簡化變參方法調用實例方法

發布時間:2020-08-24 05:57:02 來源:腳本之家 閱讀:138 作者:springup 欄目:編程語言

這是所有修改里最簡單的一個,只是去掉了方法簽名中同時出現變參和泛型時才會出現的類型警告信息。

換句話說,除非你寫代碼時習慣使用類型為T的不定數量參數,并且要用它們創建集合,否則你就可以進入下一節了。如果你想要寫下面這種代碼,那就繼續閱讀本節:

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 HashMap
Collection<HashMap<String, String>> coll = doSomething(hm1,hm2);

編譯器會嘗試創建一個包含hm1和hm2的數組,但這種類型的數組應該是被嚴格禁止使用的。面對這種進退兩難的局面,編譯器只好違心地創建一個本來不應出現的泛型數組實例,但它又覺得自己不能保持沉默,所以還得嘟囔著警告你這是“未經檢查或不安全的操作”。

從類型系統的角度看,這非常合理。但可憐的開發人員本想使用一個十分靠譜的API,一看到這些嚇人的警告,卻得不到任何解釋,不免會內心忐忑。

以上就是本次介紹的全部知識點內容,希望我們整理的內容能夠幫助到大家。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥江县| 河津市| 兴海县| 左权县| 肇州县| 新河县| 定南县| 田林县| 莎车县| 台江县| 龙山县| 尼勒克县| 原阳县| 榆中县| 渭源县| 新邵县| 宝坻区| 神农架林区| 阜城县| 鸡西市| 茶陵县| 宜黄县| 应城市| 葫芦岛市| 原阳县| 庐江县| 田林县| 巴林右旗| 穆棱市| 来宾市| 庄河市| 祁门县| 沙湾县| 长兴县| 阳曲县| 随州市| 神池县| 常德市| 宣武区| 冀州市| 措勤县|