亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

桂平市| 同心县| 文水县| 巫山县| 内江市| 舞阳县| 汾西县| 同心县| 望江县| 石景山区| 清苑县| 天峨县| 潮安县| 永年县| 浦县| 武乡县| 江都市| 金阳县| 大名县| 松溪县| 天等县| 武功县| 淳安县| 东至县| 平舆县| 佛坪县| 汶川县| 会理县| 凭祥市| 济源市| 遵化市| 同仁县| 陆河县| 乐陵市| 时尚| 兴宁市| 巴林左旗| 黔江区| 沽源县| 金寨县| 青河县|