콜론 두개 (::– 이중 콜론 연산자)의 정식 명칭은메소드 참조 표현식(method reference expression)이며, 결론부터 말하자면 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다.
말 그대로 람다 표현식(expression)에서만 사용 가능하고, 사용 방법은[인스턴스]::[메소드명(또는 new)]으로 사용하는데, 예제를 통해 보는 것이 이해가 빠릅니다. 스태틱 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수 있습니다.
예1) 리스트를 순회하면서 println을 하고자 할 때
import java.util.Arrays;
import java.util.List;
publicclass DoubleColonTest {
publicstaticvoidmain(String[] args){
List<String> names = Arrays.asList("김갑순", "김갑돌");
// x를 건네고 받는 과정에서 x를 두 번 적게 된다.
names.forEach(x -> System.out.println(x));
// 아예 x들을 빼버리고 아래와 같이 작성할 수 있다.
names.forEach(System.out::println);
}
}
forEach의 첫 번째 구문은 람다식이x를 파라미터로 넘기고println(x)이 그 파라미터를 받는 과정에서x를 두 번 사용하게 됩니다. 람다식이 건네는 파라미터와 받는 쪽의 파라미터가 동일할 때, 두 번째 구문처럼System.out::println으로 줄여쓸 수 있습니다.
사용 방법이[인스턴스]::[메소드명(또는 new)]라고 했는데, 여기서는 System.out이 인스턴스 부분이며, 그 인스턴스의 메소드 중 하나인 println이 메소드명으로 사용되었습니다.
댓글