
[10주차 수강 후기]
람다식 완전 정복하기
안녕하세요! KB IT's Your Life 7기 기자단입니다 😊
오늘은 자바에서 코드를 훨씬 간결하고 우아하게 만들어주는
람다식(Lambda Expression) 에 대해 정리해볼게요.
처음엔 화살표(->) 기호가 낯설게 느껴질 수 있지만,
차근차근 따라오시면 분명히 이해되실 거예요!
- 람다식이란? 🤔
먼저 기본 개념부터 짚고 갈게요.
람다식은 함수형 프로그래밍에서 나온 개념이에요.
함수형 프로그래밍이란, 함수를 정의하고 그 함수를 데이터 처리부로 보내서 데이터를 처리하는 기법인데요.
여기서 람다식은 바로 그 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이에요.
자바는 이 람다식을 익명 구현 객체로 변환해서 처리한답니다!


람다식의 기본 문법은 이렇게 생겼어요.
(매개변수, …) -> { 처리 내용 }
화살표(->) 를 기준으로 왼쪽엔 매개변수, 오른쪽엔 처리할 내용이 들어가는 구조예요.
정말 심플하죠? 😄
- 함수형 인터페이스 (Functional Interface)
람다식을 사용하려면 함수형 인터페이스가 필요해요.
함수형 인터페이스란, 추상 메소드가 단 하나뿐인 인터페이스를 말해요.
그리고 그 인터페이스에 @FunctionalInterface 어노테이션을 붙여주면, 컴파일러가 추상 메소드가 하나인지 자동으로 검사해줘서 실수를 방지할 수 있어요!
기존에 익명 구현 객체를 만들던 방식보다 훨씬 간결하죠?! 😲
java@FunctionalInterface
public interface Calculable {
// 추상 메소드
void calculate(int x, int y);
}
그리고 이 인터페이스를 람다식으로 사용하면 이렇게 돼요.
javaaction((x, y) -> {
int result = x + y;
System.out.println("result: " + result);
});

- 매개변수가 없는 람다식
함수형 인터페이스의 추상 메소드에 매개변수가 없을 경우엔 이렇게 써요.
() -> { 실행문; 실행문; }
그런데 실행문이 딱 하나라면 중괄호를 생략할 수 있어요!
() -> 실행문
실제 코드로 보면 이런 느낌이에요.
// 실행문이 두 개 이상일 경우 중괄호 필요
person.action(() -> {
System.out.println("출근을 합니다.");
System.out.println("프로그래밍을 합니다.");
});
// 실행문이 한 개일 경우 중괄호 생략 가능
person.action(() -> System.out.println("퇴근합니다."));
중괄호 생략 가능 여부가 헷갈릴 수 있으니 꼭 기억해두세요!

- 매개변수가 있는 람다식
이번엔 매개변수가 있는 람다식이에요.
매개변수를 선언할 때 타입은 생략 가능하고, 구체적인 타입 대신 var를 사용할 수도 있어요.

(타입 매개변수, …) -> { 실행문; }
(var 매개변수, …) -> { 실행문; }
(매개변수, …) -> { 실행문; }
그리고 매개변수가 딱 하나일 경우엔 괄호까지 생략할 수 있어요!
단, 이때는 타입이나 var를 붙일 수 없다는 점 주의하세요 😊
java// 매개변수가 두 개일 경우
person.action1((name, job) -> {
System.out.print(name + "이 ");
System.out.println(job + "을 합니다.");
});
// 매개변수가 한 개일 경우 괄호 생략 가능
person.action2(word -> System.out.println(""" + word + ""라고 외칩니다."));
- 리턴값이 있는 람다식
함수형 인터페이스의 추상 메소드에 리턴값이 있을 경우엔 return 문을 사용해요.
그런데 return 문이 딱 하나라면 중괄호와 return 키워드를 모두 생략할 수 있어요!
연산식이나 리턴값이 있는 메소드 호출로 바로 대체할 수 있거든요.
// 일반적인 방식
person.action((x, y) -> {
double result = x + y;
return result;
});
// return 하나일 경우 생략 가능 (연산식)
person.action((x, y) -> (x + y));
// return 하나일 경우 생략 가능 (메소드 호출)
person.action((x, y) -> sum(x, y));
세 가지 방식 모두 결과는 동일하게 14.0이 출력돼요.
코드 스타일에 맞게 선택해서 쓰면 된답니다 😊
- 메소드 참조 (Method Reference)
람다식을 더 줄일 수 있는 방법도 있어요.
바로 메소드 참조예요!
람다식이 단순히 어떤 메소드를 호출하는 역할만 한다면, :: 기호를 사용해서 더 간결하게 표현할 수 있어요.
람다식
person.action((x, y) -> Computer.staticMethod(x, y));
메소드 참조 (정적 메소드)
person.action(Computer::staticMethod);
람다식
person.action((x, y) -> com.instanceMethod(x, y));
메소드 참조 (인스턴스 메소드)
person.action(com::instanceMethod);
정리하면 이렇게 돼요!


- 생성자 참조 (Constructor Reference)
마지막으로 생성자 참조예요!
람다식이 단순히 객체를 생성하고 리턴하는 역할만 한다면, 생성자 참조로 대체할 수 있어요.
java// 람다식
(a, b) -> { return new 클래스(a, b); }
// 생성자 참조
클래스::new
실제 코드에선 이렇게 써요.
javaMember m1 = person.getMember1(Member::new);
Member m2 = person.getMember2(Member::new);
같은 Member::new 표현이지만,
함수형 인터페이스의 추상 메소드 매개변수 개수에 따라
컴파일러가 자동으로 맞는 생성자를 찾아서 실행해준답니다.
생성자가 없으면 컴파일 오류가 발생하니 주의하세요!

오늘은 람다식의 핵심 개념들을 정리해봤어요!
람다식 = 데이터 처리부에 제공되는 함수 역할의 중괄호 블록
함수형 인터페이스 = 추상 메소드가 단 하나인 인터페이스, @FunctionalInterface로 보장
매개변수 없는 람다식 = () -> { ... }, 실행문 하나면 중괄호 생략 가능
매개변수 있는 람다식 = 타입 생략 가능, 매개변수 하나면 괄호도 생략 가능
리턴값 있는 람다식 = return 하나면 중괄호·return 모두 생략 가능
메소드 참조 = 클래스::메소드 또는 참조변수::메소드
생성자 참조 = 클래스::new
처음엔 -> 기호가 어색하게 느껴질 수 있지만,
직접 코드를 써보면서 연습하다 보면 금방 익숙해질 거예요!
다음 포스팅에서도 유익한 내용으로 돌아올게요 😊

'EDUCATION > [KB] IT's Your Life' 카테고리의 다른 글
| [KB IT's Your Life 7기] 12주차 후기 - 코딩테스트 준비 (0) | 2026.05.26 |
|---|---|
| [KB IT's Your Life 7기] 11주차 후기, 코딩 테스트 자료 구조 (0) | 2026.05.18 |
| [KB IT's Your Life] 9주차 후기, 백엔드 개발을 위한 자바프로그래밍 후기 (0) | 2026.05.07 |
| [KB IT's Your Life 7기] 8주차 후기,Java - 중첩 선언과 익명 객체 (0) | 2026.04.28 |
| [KB IT's Your Life 7기] 7주차 후기, 스켈레톤 프로젝트(가계부 앱) 후기 (7) | 2026.04.20 |