1️⃣ 람다식이란?
- 함수형 프로그래밍 : 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법
- 데이터 처리부는 데이터만 가지고 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존
- 데이터 처리부는 제공된 함수의 입력값으로 데이터를 넣고 함수에 정의된 처리 내용을 실행.
- 동일한 데이터라도 함수 A를 제공해서 처리하는 결과와 함수 B를 제공해서 처리하는 결과는 다를 수 있는데, 이것이 함수형 프로그래밍의 특징으로, 데이터 처리의 다형성이라고 볼 수 있음.

- 자바는 함수형 프로그래밍을 위해 람다식을 지원. 람다식은 위 그림과 같이 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록. 데이터 처리부는 람다식을 받아 매개변수에 데이터를 대입하고 중괄호를 실행시켜 처리
- 자바는 람다식을 익명 구현 객체로 변환.
익명 구현 객체 구현
public interface Calculable{
// 추상 메서드
void calculate(int x, int y);
}
// 익명 구현 객체 구현
Calculable calculable = new Calculable(){
@Override
public void calculate(int x, int y){
처리내용
}
};
람다식으로 표현
(x, y) -> { 처리내용 };
- 인터페이스의 익명 구현 객체를 람다식으로 표현하려면 인터페이스가 단 하나의 추상 메서드만 가져야 함.
- 인터페이스가 단 하나의 추상 메서드를 가질 때, 이를 함수형 인터페이스.
- 인터페이스가 함수형 인터페이스임을 보장하기 위해서는
@FunctionalInterface
어노테이션 사용. 이 어노테이션은 선택사항이지만, 컴파일 과정에서 추상 메서드가 하나인지 검사하기 때문에 정확한 인터페이스를 작성할 수 있게 도와주는 역할.