Programming/Java

[JAVA] 람다 표현식(Lambda Expressions)

Criming 2022. 8. 19. 15:10

람다 표현식이란?

 

간단히 말하면 메소드를 하나의 식으로 표현한 것이다.  ● 람다표현식 기본 구조 : (매개변수목록) -> {함수몸체}

메서드를  람다식으로 표현하면 객체를 생성하지 않아도 메소드를 사용할 수 있다.  

[기본 메서드 ] 
int sum(int x, int y){ return x+y };

[람다 표현식]
(x,y) -> x+y
 [ 기본메서드 → 람다 표현식으로 바꾸기 ]
int sum(int x, int y) { return x+y };   1) 메서드 이름과 반환타입
(int x, int y) { return x+y };          2) 매개변수와 몸통{} 사이에 '->'추가
(int x, int y) -> { return x+y };       3) 반환값은 return문 대신 식으로 대신 표현(식의 연산결과가 자동적으로 반환됨)
(int x, int y) ->  x+y                     ※ 문장(statement)이 아니고 식(expression)이므로 끝에 세미콜론; 이 붙지 않는다.
(x, y) -> x+y                              ※ return문을 계속 쓸 경우 몸통{ } 을 생략할 수 없다.
                                           ※ 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생락할 수 있다.
                                           ※ 매개변수가 하나인 경우에는 괄호()를 생략할 수 있다.

 

일반적으로 자바에서는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라고 한다.

따라서 람다식은 메서드 이름과 반환값이 없어지므로 익명 함수(anonymous function)과 같다고 할 수 있다.

[ 람다 표현식 ]
(int x, int y) -> x+y

[ 익명 클래스 ] 
new Object(){
	int sum(int x, int y){
    	return x+y;
        }
}