Study/JAVA

[Java] 람다식(Lambda expression)

Reese 2023. 1. 8. 23:40

람다식이란?

  • 메서드를 하나의 식(expression)으로 표현한 것.
//메서드
int max(int a, int b){
		return a > b ? a : b;
}

//람다식
(a, b) -> a > b ? a : b
  • 함수를 간략하면서도 명확한 식으로 표현 O
  • 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어짐 ⇒ 익명함수(anonymous function)
  • 람다식은 익명 함수가 아니라 익명 객체이다.

함수와 메서드의 차이?

  • 근본적으로는 동일
  • 함수 : 일반적 용어, 메서드 : 객체지향개념 용어
  • 함수 : 클래스에 독립적, 메서드 : 클래스에 종속적

람다식 작성

  1. 메서드의 이름과 반환타입을 제거하고 ‘→’를 블록{} 앞에 추가한다.
//before
int max(int a, int b){
		return a > b ? a : b;
}

//after
~~int max~~ (int a, int b) **->** {
		return a > b ? a: b;
}
  1. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 (끝에 ; 안 붙임)
//before
(int a, int b) -> {
		return a > b ? a: b;
}

//after
(int a, int b) -> a > b ? a: b
  1. 매개변수의 타입이 추론 가능하면 생략가능 (대부분의 경우 생략가능)
//before
(int a, int b) -> a > b ? a: b

//after
(a, b) -> a > b ? a : b

람다식 작성 주의사항

  1. 매개변수가 하나인 경우, 괄호() 생략가능(타입이 없을 때만)
  2. 블록 안의 문장이 하나뿐 일 때, 괄호 {} 생략가능 (끝에 ; 안 붙임)

 

//java의 정석