람다(lambda)
2026년 5월 17일
-
함수를 보다 단순하게 표현하는 방법이다.
-
람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어이다.
-
최근 함수형 프로그래밍이 주목을 받으며, 자바 JDK 8 버전부터 람다 표현식을 지원하기 시작했다.
-
함수형 인터페이스를 사용하는데 많이 쓰인다.
-
람다식은 자바스크립트의 화살표 함수 (
() => {}) 와 굉장히 비슷한 형태이다.
문법
Java
- 람다는 매개변수 화살표(->) 함수몸체로 이용하여 사용 할 수 있다.
- 함수 몸체가 단일 실행문이면 괄호{}를 생략(타입 생략) 할 수 있다.
- 함수 몸체가 return문으로만 구성되어 있는 경우(한줄의 실행 코드만 있는 경우) 괄호{}를 생략할 수 있다.
기본 형태
Java
- 기본 형태는 위와 같이 괄호 (
()) 안에는 타입과 매개변수를 나열하고 화살표 모양을 작성한 다음 (->) 중괄호 ({}) 안에 실행될 코드를 작성한다.
타입 생략
- 보통의 경우 대입되는 시점에서 매개변수의 타입을 추론할 수 있으므로, 아래와 같이 타입을 생략해서 사용한다.
Java
매개변수가 없을 경우
- 매개변수가 없을경우 반드시 아래와 같이 빈 괄호 (
()) 를 사용해야한다.
Java
하나의 매개변수만 있는 경우
- 하나의 매개변수만 있는 경우에는 아래와 같이 괄호를 생략하여 작성할 수 있다.
Java
한줄의 실행 코드만 있는 경우
- 실행 코드가 한 줄만 있는 경우 중괄호를 생략하여 작성할 수 있다.
Java
실행 코드에 반환문만 있는 경우
- 실행 코드에 반환문 하나만 존재하는 경우 중괄호와
return키워드를 생략할 수 있다.
Java
@FunctionalInterface 어노테이션
두개 이상의 추상 메소드가 선언된 인터페이스는 람다식으로 구현 객체를 만들 수 없다. 즉, 함수형 인터페이스를 작성하려면 인터페이스에 하나의 추상 메소드만 정의해야한다.
그런데, 함수형 인터페이스로 사용되던 인터페이스에 누군가 실수로 추상 메소드를 하나 더 정의했다면 문제가 생길 것 이다. 이런 문제를 컴파일러가 체킹할 수 있도록 만들어주는 어노테이션이 존재하는데 그것이 바로 @FunctionalInterface 어노테이션이다. 인터페이스에 해당 어노테이션을 달아주면, 해당 인터페이스는 두개 이상의 추상 메소드를 가질 수 없다.
Java