Effective Java~43. 方法引用优于Lambda
生活随笔
收集整理的這篇文章主要介紹了
Effective Java~43. 方法引用优于Lambda
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 提供了一種生成函數對象的方法,比 lambda 還要簡潔,那就是:方法引用( method references)。下面是一段程序代碼片段,它維護一個從任意鍵到整數值的映射。如果將該值解釋為鍵的實例個數,則該程序是一個多重集合的實現。該代碼的功能是,根據鍵找到整數值,然后在此基礎上加1:
map.merge(key, 1, (count, incr) -> count + incr);
從 Java 8 開始, Integer 類(和所有其他包裝數字基本類型)提供了一個靜態方法總和,和它完全相同。
????????許多方法引用是指靜態方法,但有 4 種方法沒有引用靜態方法。 其中兩個 Lambda 等式是特定(bound)和任意(unbound)對象方法引用。 在特定對象引用中,接收對象在方法引用中指定。 特定對象引用在本質上與靜態引用類似:函數對象與引用的方法具有相同的參數。 在任意對象引用中,接收對象在應用函數對象時通過方法的聲明參數之前的附加參數指定。 任意對象引用通常用作流管道(pipelines)中的映射和過濾方法(條目 45)。 最后,對于類和數組,有兩種構造方法引用。 構造方法引用用作工廠對象。 下表總結了所有五種方法引用:
| 方法引用類型 Method Ref Type | 舉例 Example | Lambda 等式 Lambda Equivalent |
| Static | Integer::parseInt | str -> Integer.parseInt(str) |
| Bound | Instant.now()::isAfter | Instant then = Instant.now(); t -> then.isAfter(t) |
| Unbound | String::toLowerCase | str -> str.toLowerCase() |
| Class Constructor | TreeMap<K, V>::new | () -> new TreeMap<K, V> |
| Array Constructor | int[]::new | len -> new int[len] |
????????總之,方法引用通常為 lambda 提供一個更簡潔的選擇。 如果方法引用看起來更簡短更清晰,請使用它們;否則,還是堅持 lambda。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Effective Java~43. 方法引用优于Lambda的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2中用interceptor
- 下一篇: Java并发编程实战~Immutabil