Java 7 引入了一項令人興奮的語法改進——鑽石語法,它能大幅減少處理泛型時的樣板代碼。在泛型引入之初,雖然提供了類型安全,但宣告與實例化時的冗長語法卻讓開發者叫苦不迭。鑽石語法的出現,正是為了解決這一痛點。
假設我們需要一個 Map,鍵為用戶 ID(Integer),值為該用戶專屬的查找表列表。在 Java 7 之前,代碼必須這樣寫:
Map<Integer, List<String>> usersLists = new HashMap<Integer, List<String>>();
注意到右側的類型參數與左側完全重複了嗎?這不僅增加輸入負擔,還降低了代碼可讀性。
Java 7 允許我們在實例化時省略右側的類型參數,僅保留一對尖括號:
Map<Integer, List<String>> usersLists = new HashMap<>();
編譯器會自動推斷右側的類型資訊,這得益於 Project Coin 引入的改進型類型推斷機制。編譯器並非單純複製左側的類型文本,而是根據上下文進行智慧推導。這項特性完全向後相容,重構舊代碼時可放心使用。
這對空的尖括號 <> 形狀酷似鑽石,故得名。其正式提案名稱為「泛型實例創建的改進型類型推斷」,縮寫 ITIGIC 聽起來頗為拗口,所以社區普遍沿用「鑽石語法」這一生動稱呼。
讀書筆記來源:《The Well-Grounded Java Developer》