使用Lambda 的API 的演變:隨著Java 中lambda 的引入,編寫API 的實踐發生了變化,例如避免使用模板方法模式而轉而使用靜態方法接受函數物件的工廠或建構子。
LinkedHashMap 範例: 與其重寫用於快取控制的removeEldestEntry 方法,不如使用 BiPredicate 函數介面將靜態工廠或建構子與函數物件一起使用會更現代。
標準函數接口的使用: java.util.function 包提供了廣泛的標準函數接口,這些接口應該優先於自定義接口,以使 API 更容易理解並提高互通性。
主要功能介面:
原始類型的函數介面:原始類型(int、long、double)的六種基本介面有多種變體,例如 IntPredicate 和 LongBinaryOperator。
何時建立自訂功能介面:
當沒有標準介面滿足需求時。
當需要描述性名稱或強有力的契約時。
當介面可以從自訂預設方法中受益時。
使用@FunctionalInterface註解:表示該介面被設計為支援lambdas,確保它只有一個抽象方法。
避免不明確的重載:不要創建具有許多重載的方法,這些重載在同一參數位置接受不同的功能介面以避免歧義。
**結論:**現代 API 的設計必須考慮 Lambda 和函數式介面。一般來說,最好使用預設的 java.util.function 接口,除非在特殊情況下需要自訂接口。
以上是項目 優先使用標準功能接口的詳細內容。更多資訊請關注PHP中文網其他相關文章!