람다식(Lambda Expression)
- 함수(메서드)를 간단한 '식(expression)'으로 표현하는 방법
- 익명 함수(이름이 없는 함수, anonymous function)
- 함수와 메서드의 차이
- 근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어
- 함수는 클래스에 독립적, 메서드는 클래스에 종속적
람다식 작성하기
- 메서드의 이름과 반환타입을 제거하고 '->'를 블록 {} 앞에 추가한다.
(int a, int b) -> {
return a > b ? a : b;
}
- 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ';' 안 붙임)
(int a, int b) -> a > b ? a : b
- 매개변수의 타입이 추론 가능하면 생략가능 (대부분의 경우 생략가능)
(a, b) -> a > b ? a : b
람다식 작성시 주의사항
- 매개변수가 하나인 경우, 괄호() 생략가능(※ 타입이 없을 때만)
(a) -> a * a
a -> a * a
(int a) -> a * a
int a -> a * a
- 블록 안의 문장이 하나뿐일 때, 괄호 {} 생략 가능(끝에 ';' 안 붙임)
(int i) -> System.out.println(i)
람다식은 익명 객체(클래스)
(a, b) -> a > b ? a : b
아래와 동일
new Object(){
int max(int a, int b){
return a > b ? a : b;
}
}
- 람다식(익명 객체)을 다루기 위한 참조변수가 필요. 참조변수의 타입은? -> 다음강의