람다식이란?
- 메서드를 하나의 식(expression)으로 표현한 것.
//메서드
int max(int a, int b){
return a > b ? a : b;
}
//람다식
(a, b) -> a > b ? a : b
- 함수를 간략하면서도 명확한 식으로 표현 O
- 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어짐 ⇒ 익명함수(anonymous function)
- 람다식은 익명 함수가 아니라 익명 객체이다.
함수와 메서드의 차이?
- 근본적으로는 동일
- 함수 : 일반적 용어, 메서드 : 객체지향개념 용어
- 함수 : 클래스에 독립적, 메서드 : 클래스에 종속적
람다식 작성
- 메서드의 이름과 반환타입을 제거하고 ‘→’를 블록{} 앞에 추가한다.
//before
int max(int a, int b){
return a > b ? a : b;
}
//after
~~int max~~ (int a, int b) **->** {
return a > b ? a: b;
}
- 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 (끝에 ; 안 붙임)
//before
(int a, int b) -> {
return a > b ? a: b;
}
//after
(int a, int b) -> a > b ? a: b
- 매개변수의 타입이 추론 가능하면 생략가능 (대부분의 경우 생략가능)
//before
(int a, int b) -> a > b ? a: b
//after
(a, b) -> a > b ? a : b
람다식 작성 주의사항
- 매개변수가 하나인 경우, 괄호() 생략가능(타입이 없을 때만)
- 블록 안의 문장이 하나뿐 일 때, 괄호 {} 생략가능 (끝에 ; 안 붙임)
//java의 정석
'Study > JAVA' 카테고리의 다른 글
[자료구조] 스택(Stack) / 큐(Queue) (0) | 2023.01.16 |
---|---|
[Java] 배열(Array) (0) | 2023.01.12 |
[객체지향 / Java] 객체란? 어떻게 사용할까? (0) | 2022.12.30 |
[객체지향 / Java] 클래스 쉽게 이해하기 (0) | 2022.12.29 |