[KB IT's Your Life] 10주차 후기, 람다
2026. 5. 11. 10:06

 

 

 

[10주차 수강 후기]

람다식 완전 정복하기

 

 


 

 

 

안녕하세요! KB IT's Your Life 7기 기자단입니다 😊

오늘은 자바에서 코드를 훨씬 간결하고 우아하게 만들어주는

람다식(Lambda Expression) 에 대해 정리해볼게요.

 

처음엔 화살표(->) 기호가 낯설게 느껴질 수 있지만,

차근차근 따라오시면 분명히 이해되실 거예요!

 

 


 

 

  1. 람다식이란? 🤔
    먼저 기본 개념부터 짚고 갈게요.
    람다식은 함수형 프로그래밍에서 나온 개념이에요.
    함수형 프로그래밍이란, 함수를 정의하고 그 함수를 데이터 처리부로 보내서 데이터를 처리하는 기법인데요.
    여기서 람다식은 바로 그 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이에요.
    자바는 이 람다식을 익명 구현 객체로 변환해서 처리한답니다!

 

 

람다식의 기본 문법은 이렇게 생겼어요.
(매개변수, …) -> { 처리 내용 }
화살표(->) 를 기준으로 왼쪽엔 매개변수, 오른쪽엔 처리할 내용이 들어가는 구조예요.
정말 심플하죠? 😄

 

 

  1. 함수형 인터페이스 (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);
});

 

 

 

  1. 매개변수가 없는 람다식

함수형 인터페이스의 추상 메소드에 매개변수가 없을 경우엔 이렇게 써요.

() -> { 실행문; 실행문; }


그런데 실행문이 딱 하나라면 중괄호를 생략할 수 있어요!

() -> 실행문


실제 코드로 보면 이런 느낌이에요.

// 실행문이 두 개 이상일 경우 중괄호 필요
person.action(() -> {
System.out.println("출근을 합니다.");
System.out.println("프로그래밍을 합니다.");
});

 

// 실행문이 한 개일 경우 중괄호 생략 가능
person.action(() -> System.out.println("퇴근합니다."));


중괄호 생략 가능 여부가 헷갈릴 수 있으니 꼭 기억해두세요!

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

(타입 매개변수, …) -> { 실행문; }
(var 매개변수, …) -> { 실행문; }
(매개변수, …) -> { 실행문; }


그리고 매개변수가 딱 하나일 경우엔 괄호까지 생략할 수 있어요!
단, 이때는 타입이나 var를 붙일 수 없다는 점 주의하세요 😊

 

java// 매개변수가 두 개일 경우
person.action1((name, job) -> {
    System.out.print(name + "이 ");
    System.out.println(job + "을 합니다.");
});

 

// 매개변수가 한 개일 경우 괄호 생략 가능
person.action2(word -> System.out.println(""" + word + ""라고 외칩니다."));

 

 

  1. 리턴값이 있는 람다식
    함수형 인터페이스의 추상 메소드에 리턴값이 있을 경우엔 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이 출력돼요.
코드 스타일에 맞게 선택해서 쓰면 된답니다 😊

  1. 메소드 참조 (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);


정리하면 이렇게 돼요!

  1. 생성자 참조 (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

 

 

처음엔 -> 기호가 어색하게 느껴질 수 있지만,

직접 코드를 써보면서 연습하다 보면 금방 익숙해질 거예요!

다음 포스팅에서도 유익한 내용으로 돌아올게요 😊