差異處
這裏顯示兩個版本的差異處。
java:effective_java:lambdas_and_streams:prefer_method_references_to_lambdas [2019/07/18 23:20] tony [Introduction & My Opinion] |
java:effective_java:lambdas_and_streams:prefer_method_references_to_lambdas [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>java effective_java}} | ||
- | ====== Effective Java - Prefer method references to lambdas ====== | ||
- | ===== Introduction & My Opinion ===== | ||
- | 這個item回歸Lambda的目的之一: 讓程式更清晰簡潔。以書中範例來說,它使用了Map的merge功能: | ||
- | <code java> | ||
- | map.merge(key, 1, (count, incr) -> count + incr); | ||
- | </code> | ||
- | 以這段程式碼來說,假如key有重複,它會將old value與第二個參數的new value相加。假如改用method reference的寫法,會更容易表達意圖: | ||
- | <code java> | ||
- | map.merge(key, 1, Integer::sum); | ||
- | </code> | ||
- | 但使用method reference也有可能不會達到更好效果,這個可以自行判斷。另外書中整理了以下五種method reference的方式:\\ | ||
- | \\ | ||
- | {{:java:effective_java:lambdas_and_streams:effective_java_method_ref.png|}}\\ | ||
- | \\ | ||
- | **Note.** Bound指的是有參數的method reference,Unbound是無參數的。 | ||
- | |||
- | ===== Note ===== | ||
- | Effective Java第三版Item 43。 | ||
- | ===== Reference ===== | ||
- | * Effective Java, 3/e | ||
- | ===== ===== | ||
- | ---- | ||
- | \\ | ||
- | ~~DISQUS~~ | ||