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

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

成都創(chuàng)新互聯(lián)公司服務項目包括麗江網(wǎng)站建設、麗江網(wǎng)站制作、麗江網(wǎng)頁制作以及麗江網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,麗江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到麗江省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

public static <T> Collection<T> doSomething(T... entries) {
 ...
}

還在?很好。這到底是怎么回事?

變參方法是指參數(shù)列表末尾是數(shù)量不定但類型相同的參數(shù)方法。但你可能還不知道變參方法是如何實現(xiàn)的。基本上,所有出現(xiàn)在末尾的變參都會被放到一個數(shù)組中(由編譯器自動創(chuàng)建),并作為一個參數(shù)傳入。

這是個好主意,但是存在一個公認的Java泛型缺陷——不允許創(chuàng)建已知類型的泛型數(shù)組。比如下面這段代碼,編譯就無法通過:

HashMap<String, String>[] arrayHm = new HashMap<>[2]; 

不可以創(chuàng)建特定泛型的數(shù)組,只能這樣寫:

HashMap<String, String>[] warnHm = new HashMap[2];

可這樣編譯器會給出一個只能忽略的警告。你可以將warnHm的類型定義為HashMap<String,String>數(shù)組,但不能創(chuàng)建這個類型的實例,所以你不得不硬著頭皮(或至少忘掉警告)硬生生地把原始類型(HashMap數(shù)組)的實例塞給warnHm。

這兩個特性(編譯時生成數(shù)組的變參方法和已知泛型數(shù)組不能是可實例化類型)碰到一起時,會令人有點頭疼??纯聪旅孢@段代碼:

HashMap<String, String> hm1 = new HashMap<>();
HashMap<String, String> hm2 = new HashMap
Collection<HashMap<String, String>> coll = doSomething(hm1,hm2);

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

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

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

分享文章:java7簡化變參方法調用實例方法
瀏覽地址:http://bm7419.com/article8/goeiop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化軟件開發(fā)、響應式網(wǎng)站網(wǎng)站內鏈、微信小程序、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化