인디언식 기우제

자바 람다식 본문

Java/자바

자바 람다식

밍주키니어 2023. 6. 12. 21:39
람다식 이란?

함수(메소드)를 간단한 식으로 표현한 것이다.

//메소드

int max(int a, int b) {
	return a > b ? a : b;
}

이것이 기존의 메소드이고, 람다식으로 표현하면

//람다식

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

이렇게 까지 간략하게 표현할 수 있다.

메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'라고도 한다.

 

람다식의 특징

- 코드를 간결하면서도 이해하기 쉽게 표현할 수 있다.

- 클래스에 포함되어야 하는 메소드와 달리 람다식 자체만으로도 호출할 수 있다.

- 메소드의 매개변수로 전달이 되거나 메소드의 결과로 반환될 수 있다.

- 멀티 쓰레드를 활용하여 병렬처리를 사용할 수 있다.

 

람다식 작성법

메소드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통{} 사이에 '->'를 추가하기만 하면 된다.

(매개변수 선언부) -> { 몸통 }
(int a, int b) -> { return a > b ? a : b; }

반환값이 있는 메소드라면, return문 대신 식으로 대신 할 수 있다. 이때는 끝에;을 붙이지 않는다.

함수 몸체안의 문장이 하나일 대는 {}를 생략할 수 있다.

단 식이 아닌 return문으로 표현하고자 할 때에는 {} 생략 불가.

(int a, int b) -> { return a > b ? a : b; } // 정상
(int a, int b) ->          a > b ? a : b    // 정상
(int a, int b) ->   return a > b ? a : b    // 에러

람다식에 선언된 매개변수의 타입은 추론이 가능한 경우에 생략가능. 대부분의 경우에 생략 가능하다.

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

 

선언된 매개변수가 하나뿐인 경우에는 괄호()를 생략할 수 있다. 단, 매개변수의 타입이 있으면 생략 불가

a     -> a + a  // 정상
int a -> a + a  // 에러