中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

java7簡化變參方法是什么

發布時間:2022-01-07 17:42:58 來源:億速云 閱讀:121 作者:iii 欄目:編程語言

本篇內容主要講解“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簡化變參方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

德化县| 固原市| 太康县| 藁城市| 江阴市| 乐安县| 汽车| 平安县| 久治县| 许昌市| 三明市| 洛南县| 玉林市| 敦煌市| 上饶县| 县级市| 南宁市| 桑植县| 高尔夫| 成安县| 乐昌市| 盐源县| 仁怀市| 雅江县| 丹巴县| 浏阳市| 兰溪市| 通榆县| 繁昌县| 集贤县| 太原市| 伽师县| 松滋市| 建湖县| 桓仁| 浠水县| 宝山区| 西乌| 监利县| 巴楚县| 贞丰县|