Java 람다식 이중콜론 연산자 (메소드 참조 표현식)
목차
콜론 두개 (:: – 이중 콜론 연산자)의 정식 명칭은 **메소드 참조 표현식(method reference expression)**이며, 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다.
사용 방법은 [인스턴스]::[메소드명(또는 new)]으로 사용합니다. 스태틱 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수 있습니다.
import java.util.Arrays;
import java.util.List;
public class DoubleColonTest {
public static void main(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으로 줄여쓸 수 있습니다.
여기서 System.out이 인스턴스 부분이며, 그 인스턴스의 메소드 중 하나인 println이 메소드명으로 사용되었습니다. 참고로 System.out은 PrintStream 인스턴스를 반환합니다.