더북(TheBook)

3.5.1 메서드 참조


대·소문자 구분 없이 문자열을 정렬한다고 하자. 그러면 다음과 같이 호출할 수 있다.

Arrays.sort(strings, (x, y) -> x.compareToIgnoreCase(y));


이 코드 대신 다음 메서드 표현식을 전달할 수도 있다.

Arrays.sort(strings, String::compareToIgnoreCase);


표현식 String::compareToIgnoreCase는 람다 표현식 (x, y) -> x.compareToIgnoreCase(y)에 대응하는 메서드 참조다.

또 다른 예를 보자. Objects 클래스는 isNull 메서드를 정의한다. Objects.isNull(x)를 호출하면 단순히 x = = null의 결과 값을 반환한다. 이때는 isNull 메서드의 존재가 의미 없어 보이지만, isNull은 메서드 표현식으로 사용하도록 설계된 메서드다. 다음 호출은 리스트에서 null 값을 모두 제거한다.

list.removeIf(Objects::isNull);

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.