귀찮지만 만들어보자

이펙티브 자바 - 람다와 스트림(2) 본문

이펙티브 자바

이펙티브 자바 - 람다와 스트림(2)

타우렌주술사 2019. 1. 13. 16:33

람다보다는 메서드 참조(method reference)를 사용하라


일반적으로 사용하는 람다보다 더 간결하게 만드는 방법이다

- 예시
map.merge(key, 1, (count, inc) -> count + incr);
map.merge(key, 1, Integer::sum);

이런식으로 더욱 간결하게 사용할 수 있다. 인텔리제이에서 다 만들어주더라 다른 IDE도 되겠지..?

하지만 무조건적으로 간결해지는 것은 아니다.
- 예시
service.execute(GoshThisClassNameIsHumongous::action);
service.execute(() -> action());

이럴 경우에는 람다보다 메서드 참조가 더욱 알아먹기 어렵다.. 그러니까 적절하게 선택해서 사용하자.

람다로도는 불가능하지만 메서드 참조로는 가능한 유일한 예는 제네릭 함수 타입 구현이다. 이게뭐여