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