第44條:堅持使用標準的函數接口

Java8在提供了lambda 的同時也提供了標準的函數接口,在java.util.function 中提供了大量的標準函數接口。只要標準的函數接口能夠滿足需求,通常應該優先考慮,而不是專門再構建一個新的函數接口。
其中有六個是基礎接口,其他的接口可以由基礎接口推斷出:

image.png

如常用的接口BiFunction:
BifunctionTest


使用時需要注意:

  • 不要使用帶包裝類型的基礎函數接口來代替基本函數。它破壞了基本類型優于裝箱類型的原則。批量處理裝箱基本類型時可能會有嚴重的性能問題。
  • 在自己編寫函數接口時,一定要始終使用@FunctionalInterface注釋來注釋接口。避免后續維護人員不小心給該接口添加抽象方法。
    且一定要滿足下面三條原則:

a.通用,并可從描述性名稱中受益。
b.有與其關聯的強約定
c.受益于定制的缺省方法

  • 不要給相同參數位置,提供不同的函數接口來進行重載。它會在客戶端導致歧義。

在日常開發中,其實主要使用的還是標準函數接口,如Supplier、Consumer、Bifunction等。反而是自己編寫函數方法還沒有具體實踐過,目前也還沒有想到滿足上述原則的場景,如果之后遇見可以嘗試下。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容