這是所有修改里最簡單的一個,只是去掉了方法簽名中同時出現(xiàn)變參和泛型時才會出現(xiàn)的類型警告信息。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括麗江網(wǎng)站建設(shè)、麗江網(wǎng)站制作、麗江網(wǎng)頁制作以及麗江網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,麗江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到麗江省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
換句話說,除非你寫代碼時習(xí)慣使用類型為T的不定數(shù)量參數(shù),并且要用它們創(chuàng)建集合,否則你就可以進入下一節(jié)了。如果你想要寫下面這種代碼,那就繼續(xù)閱讀本節(jié):
public staticCollection doSomething(T... entries) { ... }
還在?很好。這到底是怎么回事?
變參方法是指參數(shù)列表末尾是數(shù)量不定但類型相同的參數(shù)方法。但你可能還不知道變參方法是如何實現(xiàn)的?;旧?,所有出現(xiàn)在末尾的變參都會被放到一個數(shù)組中(由編譯器自動創(chuàng)建),并作為一個參數(shù)傳入。
這是個好主意,但是存在一個公認的Java泛型缺陷——不允許創(chuàng)建已知類型的泛型數(shù)組。比如下面這段代碼,編譯就無法通過:
HashMap[] arrayHm = new HashMap<>[2];
不可以創(chuàng)建特定泛型的數(shù)組,只能這樣寫:
HashMap[] warnHm = new HashMap[2];
可這樣編譯器會給出一個只能忽略的警告。你可以將warnHm的類型定義為HashMap
這兩個特性(編譯時生成數(shù)組的變參方法和已知泛型數(shù)組不能是可實例化類型)碰到一起時,會令人有點頭疼??纯聪旅孢@段代碼:
HashMaphm1 = new HashMap<>(); HashMap hm2 = new HashMap Collection > coll = doSomething(hm1,hm2);
編譯器會嘗試創(chuàng)建一個包含hm1和hm2的數(shù)組,但這種類型的數(shù)組應(yīng)該是被嚴格禁止使用的。面對這種進退兩難的局面,編譯器只好違心地創(chuàng)建一個本來不應(yīng)出現(xiàn)的泛型數(shù)組實例,但它又覺得自己不能保持沉默,所以還得嘟囔著警告你這是“未經(jīng)檢查或不安全的操作”。
從類型系統(tǒng)的角度看,這非常合理。但可憐的開發(fā)人員本想使用一個十分靠譜的API,一看到這些嚇人的警告,卻得不到任何解釋,不免會內(nèi)心忐忑。
以上就是本次介紹的全部知識點內(nèi)容,希望我們整理的內(nèi)容能夠幫助到大家。