람다식이란?
JDK 1.8 부터 추가된 람다식(Lambda Expression)은 메서드를 하나의 식(Expression)으로 표현한것이다.
람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있다.
이러한 람다식은 메서드의 이름과 반환값을 제거할 수 있어 "익명함수" 라고도 한다.
람다식 형태
// 람다식 형태
(매개변수, ...) -> { 실행문 }
// 일반 메서드
public int sum(int a, int b){
return a + b;
}
// 일반 메서드를 람다식으로 변환
(int a, int b) -> { return a + b; };
위와 같이 람다식 형태는 익명함수처럼 메서드의 이름과 반환 타입을 제거하고 선언부와 몸통 사이에 -> 를 추가한다.
-> 가 있음으로써 왼쪽 매개변수를 이용해서 중괄호{} 를 실행한다는 뜻이다.
메서드의 중괄호 {} 안에서 return 문 1개만 존재할 경우 람다식에선 return 문과 중괄호를 생략할 수 있다.
(int a, int b) -> a + b
또한 람다식에 선언된 매개변수의 타입은 추론이 가능한 경우에 타입은 생략이 가능하다.
(a, b) -> a + b
주의점
(a) -> a + a
// 변환
a -> a + a
// 주의
(int a) -> a + a (OK)
int a -> a + a (NO)
위 내용처럼 매개변수가 하나뿐인 경우 괄호를 생략할 수 있다.
하지만 매개변수의 타입이 설정되어 있으면 괄호를 생략할 수 없다.