간단히 말해 메서드를 하나의 식으로 표현한 것이다.
int min(int x, int y) {
return x < y ? x : y;
}
(x, y) -> x < y ? x : y;
위의 예제처럼 메서드를 람다 표현식으로 표현하면, 클래스를 작성하고 객체를 생성하지 않아도 메서드를 사용할 수 있다.
(매개변수 목록) -> { 함수몸체 }
람다 표현식이 단 하나의 메서드만을 호출하는 경우에 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해준다.
메서드 참조를 사용하면 불필요한 매개변수를 제거하고 :: 기호를 사용한다.
클래스 이름::메서드이름
or
참조변수이름::메서드이름
두개의 값을 전달 받아 제곱 연산을 수행하는 Math 클래스의 pow() 메서드를 호출하는 람다식을 메서드 참조를 사용하여 간단히 표현할 수 있다.
(a, b) -> Math.pow(a, b);
=>
Math::pow;
단순히 객체를 생성하고 반환하는 람다 표현식을 생성자 참조를 사용하여 간단히 표현할 수도 있다.
(a) -> { return new Object(a); }
=>
Object::new;