針對(duì)創(chuàng)建泛型定義和實(shí)例太過(guò)繁瑣的問(wèn)題,Java 7做了一項(xiàng)改進(jìn),以減少處理泛型時(shí)敲鍵盤(pán)的次數(shù)。如下代碼:
Map<Integer, Map<String,String>> usersList = new HashMap<Integer, Map<String,String>>();
可簡(jiǎn)寫(xiě)為下面這樣嗎?
Map<Integer, Map<String,String>> usersList = new HashMap<>();
在Java 7中,像這樣的聲明縮寫(xiě)完全合法,還可以向后兼容,所以當(dāng)你需要處理以前的代碼時(shí),可以把過(guò)去比較繁瑣的聲明去掉,使用新的類(lèi)型推斷語(yǔ)法,這樣可以省出點(diǎn)兒空間來(lái)。
編譯器為這個(gè)特性采用了新的類(lèi)型推斷形式。它能推斷出表達(dá)式右側(cè)的正確類(lèi)型,而不是僅僅替換成定義完整類(lèi)型的文本。
為什么叫“鉆石語(yǔ)法”
把它稱(chēng)為”鉆石語(yǔ)法”是因?yàn)檫@種類(lèi)型信息看起來(lái)像鉆石。原來(lái)提案中的名字是“為泛型實(shí)例創(chuàng)建而做的類(lèi)型推斷改進(jìn)”(Improved Type Inference for Generic Instance Creation)。這個(gè)名字太長(zhǎng),可縮寫(xiě)ITIGIC聽(tīng)上去又很傻,所以干脆就叫鉆石語(yǔ)法了。