這個item回歸Lambda的目的之一: 讓程式更清晰簡潔。以書中範例來說,它使用了Map的merge功能:
map.merge(key, 1, (count, incr) -> count + incr);
以這段程式碼來說,假如key有重複,它會將old value與第二個參數的new value相加。假如改用method reference的寫法,會更容易表達意圖:
map.merge(key, 1, Integer::sum);
但使用method reference也有可能不會達到更好效果,這個可以自行判斷。另外書中整理了以下五種method reference的方式:
Note. Bound指的是有參數的method reference,Unbound是無參數的。
其它範例可以參考link。
Reference:
- Effective Java, 3/e, Item 43。
- Method References in Java
留言
張貼留言