개발/Java

Java 람다 표현식 정리

hanks 2026. 2. 22. 18:04

Java 람다 표현식이란 무엇이며, 왜 사용하는지, 그리고 어떻게 활용하는지 자세히 알아봅니다.

왜 람다 표현식이 필요할까요?

① 기존 방식의 문제점

Java는 객체 지향 프로그래밍 언어로서, 모든 것이 객체 안에 존재해야 합니다. 익명 클래스를 사용하여 간단한 기능을 구현할 때도 불필요하게 많은 코드를 작성해야 했는데요. 예를 들어, 인터페이스를 구현하거나, 콜백 함수를 정의할 때 번거로움이 많았습니다.

java // 익명 클래스를 사용한 예시 new Thread(new Runnable() { @Override public void run() { System.out.println("Hello from anonymous class!"); } }).start();

이처럼 간단한 작업을 위해 장황한 코드를 작성해야 하는 것은 비효율적이었죠. 이러한 문제점을 해결하기 위해 Java 8부터 람다 표현식이 도입되었습니다.


핵심 개념

항목 설명
람다 표현식 익명 함수를 간결하게 표현하는 방법. 메서드를 하나의 식으로 표현하여 코드의 양을 줄이고 가독성을 높입니다.
함수형 인터페이스 람다 표현식을 사용하기 위한 인터페이스. 단 하나의 추상 메서드만 가져야 합니다. @FunctionalInterface 어노테이션을 사용하여 명시적으로 선언할 수 있습니다.
메서드 참조 람다 표현식에서 메서드를 직접 참조하는 방법. 클래스::메서드 또는 객체::메서드 형태로 사용합니다.

[클라이언트] ── 람다 표현식 적용 ──→ [코드 간결성 증가] ←── 가독성 향상 ────┘


단계별 람다 표현식 사용법

① 1단계: 함수형 인터페이스 정의

람다 표현식을 사용하려면 먼저 함수형 인터페이스를 정의해야 합니다. @FunctionalInterface 어노테이션을 사용하여 인터페이스가 함수형 인터페이스임을 명시적으로 나타낼 수 있습니다.

java @FunctionalInterface interface MyFunctionalInterface { int calculate(int x, int y); }

② 2단계: 람다 표현식 구현

정의된 함수형 인터페이스를 사용하여 람다 표현식을 구현합니다. 람다 표현식은 (매개변수) -> { 실행문; } 형태로 작성됩니다.

java MyFunctionalInterface adder = (x, y) -> { return x + y; }; MyFunctionalInterface multiplier = (x, y) -> x * y; // 실행문이 하나일 경우 {}와 return 생략 가능

③ 3단계: 람다 표현식 호출

람다 표현식을 변수에 할당한 후, 해당 변수를 통해 람다 표현식을 호출할 수 있습니다.

java int sum = adder.calculate(5, 3); // sum은 8이 됩니다. int product = multiplier.calculate(5, 3); // product는 15가 됩니다. System.out.println("Sum: " + sum); System.out.println("Product: " + product);


람다 표현식의 다양한 활용 예시

① 스트림 API와 함께 사용

람다 표현식은 스트림 API와 함께 사용할 때 강력한 시너지 효과를 냅니다. 컬렉션 데이터를 필터링, 매핑, 정렬하는 등의 작업을 간결하게 처리할 수 있습니다.

java List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// 짝수만 필터링하여 제곱한 후 리스트로 반환 List evenSquares = numbers.stream() .filter(number -> number % 2 == 0) .map(number -> number * number) .collect(Collectors.toList());

System.out.println("Even Squares: " + evenSquares); // 출력: Even Squares: [4, 16, 36, 64, 100]

② 이벤트 핸들러 구현

GUI 프로그래밍에서 이벤트 핸들러를 구현할 때 람다 표현식을 사용하여 코드를 더욱 간결하게 만들 수 있습니다.

java button.addActionListener(e -> { System.out.println("Button clicked!"); });


자주 묻는 질문

Q: 람다 표현식은 항상 함수형 인터페이스와 함께 사용해야 하나요?

A: 네, 람다 표현식은 함수형 인터페이스를 구현하는 데 사용됩니다. 함수형 인터페이스는 단 하나의 추상 메서드만 가지므로, 람다 표현식은 해당 메서드의 구현을 제공하는 역할을 합니다.

Q: 람다 표현식에서 외부 변수를 참조할 수 있나요?

A: 람다 표현식은 외부 변수를 참조할 수 있지만, 몇 가지 제약 사항이 있습니다. 람다 표현식에서 참조하는 외부 변수는 final이거나 effectively final이어야 합니다. 즉, 람다 표현식 내부에서 값을 변경할 수 없습니다.


마무리

Java 람다 표현식은 코드의 간결성을 높이고 가독성을 향상시키는 강력한 도구입니다. 함수형 인터페이스와 함께 사용하면 더욱 효과적으로 활용할 수 있으며, 스트림 API, 이벤트 핸들러 등 다양한 분야에서 유용하게 사용될 수 있습니다.

람다 표현식을 익히고 활용함으로써 더욱 효율적인 Java 프로그래밍을 경험해 보세요!