Effective Java Item 43

한주영·2024년 2월 29일
0

이펙티브자바

목록 보기
30/33

람다보다는 메서드 참조를 사용하라

1. 메서드 참조

자바에서 함수 객체를 람다보다 더 간결하게 만드는 방법

임의의 키와 Integer값의 매핑을 관리하는 프로그램의 일부

map.merge(key, 1 (count,incr) -> count + incr);

Map에 추가된 merge메서드 사용
merge메서드는 키, 값, 함수를 인수로 받으며 주어진 키가 맵안에 아직없다면 주어진 {키,값} 쌍을 그대로 저장

람다는 두 인수의 합을 단순히 반환할 뿐이다.
람다와 기능이 같은 정적 메서드 sum을 제공
람다대신 메서드 참조를 사용하면 더 보기좋은 결과를 낼수있음

map.merge(key, 1, Integer::sum);

메서드 참조를 사용하면 더 짧고 간결하다

2.람다가 메서드 참조보다 간결한 경우

다음 코드가 GoshThisClassNameIsHumongous클래스 안에있다고 가정

service.execute(GoshThisClassNameIsHumongous::action);

람다로 대체한 경우

service.execute(()->action());

3. 메서드 참조 유형

메서드 참조 유형같은 기능을 하는 람다
정적Integer::parseIntstr -> Integer.parseInt(str)
한정적(인스턴스)Instant.now()::isAfterInstant then=Instant.now(); t -> then.isAfter(t)
비한정적(인스턴스)String ::toLowerCasestr -> str.toLowerCase()
클래스 생성자TreeMap<K,V>::new()-> new TreeMap<K,V>()
배열 생성자int[]::newlen -> new int [len]

메서드 참조 쪽이 짧고 명확하다면 메서드 참조를 쓰고 , 그렇지 않을 때만 람다를 사용하라

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글