메소드 레퍼런스라고도 불린다. 자바8 버전에서 소개되었다. 람다식과 똑같은 기능을 한다.

람다식과 차이점이 있다면 인스턴스를 활용하여 메소드를 전달하는데에 있다.

1. 더블콜론과 람다

더블콜론은 람다의 간결한 버전중 하나이다 아래 예제를 보자
List<String> list = List.of("Peter", "Thomas", "Edvard", "Gerhard");

    // print using lambda
    list.forEach(item -> System.out.println(item));
자바의 더블콜론은 위 람다식을 아래와 같이 더욱 간결하게 해준다

즉 람다식이 이미 존재하는 메소드와 동일한 기능이면 메소드 레퍼런스로 람다식을 대체할 수 있다.
// print using :: (method reference operator)
    list.forEach(System.out::println);

2. 더블콜론의 사용처

* 사용하는 람다식이 기존에 있는 인스턴스의 메소드와 동일하면 메소드 레퍼런스로 대체 가능하다

* 스태틱 메소드, 인스턴스의 메소드의 메소드 레퍼런스로 사용가능하다

사용 방법

람다식에서 파라미터를 중복해서 사용하고 싶지 않을 때 사용하고,

람다식과 동일한 처리 방법을 갖긴 하지만, 이름으로 기존 메소드를 참조함으로써 더욱 보기 쉽게 사용할 수 있다
[인스턴스]::[메소드명(or new)]

ex) User::getId
① 람다 표현식 () -> {} 에서만 사용 가능하고

② static 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수도 있다 !

예시

리스트를 순회하면서 String 을 대문자로 바꿔주고자 할 때