Java 람다 표현식과 함수형 인터페이스

코딩Java
읽는데 6분 소요
처음 쓰여진 날: 2026-02-17
마지막 수정일: 2026-02-17
조회수: 1

요약

Java 람다 표현식(Lambda Expression)과 함수형 인터페이스(Functional Interface)의 개념을 알아봅니다. 정보처리기사 실기에 출제된 람다 표현식 문제를 풀기 위한 핵심 개념을 정리합니다.

람다 표현식 핵심 정리

개념설명예시
함수형 인터페이스추상 메서드가 딱 하나인 인터페이스interface F { int apply(int x); }
람다 표현식함수형 인터페이스를 짧게 구현하는 문법(x) -> x * 2
매개변수화살표(->) 왼쪽에 작성(x) 또는 (int x)
본문화살표(->) 오른쪽에 작성x * 2 또는 { return x * 2; }

함수형 인터페이스란?

함수형 인터페이스(Functional Interface)추상 메서드가 딱 하나만 있는 인터페이스입니다.

java
코드 하이라이팅 중...

추상 메서드가 하나뿐이므로, 이 인터페이스를 구현할 때 어떤 메서드를 구현해야 하는지 명확합니다. 이 특성 덕분에 람다 표현식으로 간결하게 구현할 수 있습니다.

함수형 인터페이스 vs 일반 인터페이스

java
코드 하이라이팅 중...

함수형 인터페이스만 람다 표현식으로 구현할 수 있습니다. 추상 메서드가 2개 이상이면 람다 표현식을 사용할 수 없습니다.


람다 표현식이란?

람다 표현식(Lambda Expression) 은 함수형 인터페이스를 짧고 간결하게 구현하는 문법입니다. Java 8부터 도입되었습니다.

기존 방식 vs 람다 표현식

java
코드 하이라이팅 중...

람다 표현식 (x) -> x * 2는 "매개변수 x를 받아서 x * 2를 반환한다"는 뜻입니다. 인터페이스의 유일한 추상 메서드 apply를 자동으로 구현합니다.

람다 표현식 개념
람다 표현식은 함수형 인터페이스의 추상 메서드를 간결하게 구현합니다.


람다 표현식 문법

기본 형식

java
코드 하이라이팅 중...

화살표(->)를 기준으로 왼쪽이 매개변수, 오른쪽이 본문입니다.

문법 규칙

단일 표현식이면 중괄호와 return을 생략할 수 있습니다.

java
코드 하이라이팅 중...

여러 문장이면 중괄호와 return이 필요합니다.

java
코드 하이라이팅 중...

매개변수 타입은 생략할 수 있습니다. 컴파일러가 인터페이스의 메서드 선언부를 보고 자동으로 추론합니다.

java
코드 하이라이팅 중...

문법 정리

형태예시설명
단일 표현식(x) -> x * 2중괄호, return 생략 가능
여러 문장(x) -> { return x * 2; }중괄호, return 필요
타입 명시(int n) -> n + 9매개변수 타입을 직접 작성
타입 생략(n) -> n + 9컴파일러가 타입 추론

람다 표현식은 어떤 메서드를 구현할까?

람다 표현식은 함수형 인터페이스의 유일한 추상 메서드를 자동으로 구현합니다. 매개변수 개수와 타입, 반환 타입이 인터페이스의 메서드와 일치해야 합니다.

java
코드 하이라이팅 중...
인터페이스 메서드람다 표현식연결
int apply(int x)(x) -> x * 2x는 apply의 매개변수, 반환값은 int
메서드 이름: apply-람다에서 메서드 이름은 쓰지 않음
호출: f.apply(3)본문 실행x에 3이 전달됨

실전 예제: 문제 풀이 과정

25년 2회 기출문제와 동일한 구조로 단계별 풀이를 연습합니다.

java
코드 하이라이팅 중...

단계별 분석

1단계: 구조 파악

요소역할
interface F함수형 인터페이스 (apply 메서드 1개)
run(F f)F를 받아 f.apply(3)을 실행, 예외 시 7 반환
F f = (x) -> { ... }첫 번째 람다 표현식 (변수에 저장)
(int n) -> n + 9두 번째 람다 표현식 (직접 전달)

2단계: 첫 번째 run(f) 실행

java
코드 하이라이팅 중...
  • run 메서드에서 f.apply(3)을 호출합니다
  • 람다 표현식에서 x = 3이므로 3 > 2true입니다
  • throw new Exception()으로 예외가 발생합니다
  • run 메서드의 catch 블록에서 예외를 잡아 7을 반환합니다

3단계: 두 번째 run((int n) -> n + 9) 실행

java
코드 하이라이팅 중...
  • run 메서드에서 apply(3)을 호출합니다
  • n = 3이므로 3 + 9 = 12를 반환합니다
  • 예외가 발생하지 않으므로 정상적으로 12가 반환됩니다

4단계: 최종 출력

java
코드 하이라이팅 중...

실행 순서 추적

순서코드결과
1run(f) -> f.apply(3)x=3, 3>2이므로 예외 발생
2catch (Exception e)예외를 잡아 7 반환
3run((int n) -> n + 9) -> apply(3)n=3, 3+9=12 반환
47 + 1219 출력

정보처리기사 실기 기출 문제