Effective Java Item 44:用標準函式介面

整理 Effective Java 書中 Item 44: Use standard functional interfaces 心得筆記

主旨:學會選擇正確的標準函式介面

從 Java 8 開始,因為 lambda 的加入,我們寫 API 的思維也隨之改變。如果你需要傳入一段行為(function object),不再需要額外建立匿名類別,而是可以用 lambda 寫得更簡潔。但要寫出真正好用的 API,選對函式介面更是關鍵,盡可能用 Java 內建的標準函式介面,能讓程式碼更直觀、可讀性更高,也方便 IDE 自動補全與檢查。

點出問題:不該每次都自創介面

假設你想要建立一個可限制最大筆數的快取,會用 LinkedHashMap 來實作,並覆寫 removeEldestEntry()

Read more

Effective Java Item 43:用方法參考取代 Lambda

整理 Effective Java 書中 Item 43: Prefer method references to lambdas 心得筆記

主旨

Java 8 推出 Lambda 表達式後,大大減少了匿名類別帶來的冗長語法。不過其實 Java 還有更簡潔的選擇,那就是「方法參考」(Method Reference)。這種語法讓我們可以直接把現有的方法當作函式物件來用,省去命名參數和撰寫邏輯的麻煩。本篇將說明方法參考的用法、優勢,以及在什麼情況下優先使用。

Read more

Effective Java Item21:設計介面要有前瞻性

整理 Effective Java 書中 Item 21: Design interfaces for multiple inheritance 心得筆記

主旨

Java 8 引入了 default method,終於讓介面可以新增方法而不會立刻讓現有的實作壞掉。但這個看似萬能的解法,其實潛藏不少風險,特別是對原本沒設計來支援這些方法的舊實作。這篇提醒你:設計介面時最好一開始就想清楚,因為事後「加東西」很可能會讓系統爆炸。

點出問題:default method 的魔法有限

在 Java 8 之前,介面一旦公開出去,就幾乎不能再改。加一個新方法,所有實作都會爆錯。default method 的出現,讓我們「表面上」可以擴充介面,不用動到原本的實作。

Read more