본문 바로가기
쿤즈 Dev/Java

[Java] 람다 표현식 Lambda Expression

by :)Koon 2023. 9. 23.

자바(Java)에서 람다 표현식은 자바 8부터 도입된 기능이다. 함수형 프로그래밍을 지원하고 코드를 간결하게 작성할 수 있도록 도와준다.

이번 포스팅에서는 람다 표현식에 대해서 알아보자.


람다 표현식 Lambda Expression

람다 표현식은 자바 프로그래밍에서 코드의 간결함을 준다. 람다 표현식은 익명 함수의 형태로, 메서드를 하나의 식으로 표현할 수 있다. 람다 표현식의 기본 구조는 다음과 같다.

(매개변수) -> { 실행할 코드 }

 

예를 들어서, 두 개의 정수를 더하는 함수를 간단한 람다 표현식으로 표현하면 다음과 같다.

(int a, int b) -> {
	return a + b;
}

여기서 다시 한번 코드를 더 줄일 수 있다. 코드가 한 줄이라면 중괄호와 'return' 키워드는 생략이 가능하다.

(int a, int b) -> a + b;

람다 표현식은 다양한 컨텍스트에서 사용될 수 있으며, 주로 함수형 인터페이스와 함께 사용된다. 함수형 인터페이스는 하나의 추상 메서드만을 가지고 있는 인터페이스를 의미한다. 람다 표현식은 이 추상 메서드의 구현을 제공한다.

 

예를 들어서 'Runnable' 인터페이스를 사용한 람다 표현식은 다음과 같다.

Runnable runnable = () -> {
	System.out.println("Hello, World!");
}

람다 표현식은 컬렉션 처리, 스레드 처리, 이벤트 처리 및 다양한 상황에서 코드를 간결하게 작성하는 데 도움이 된다.


람다 표현식 만들기

기존 메서드를 람다표현식으로 바꾸려면 몇 가지 단계를 따르면 된다.


함수형 인터페이스 선택

우선, 기존 메서드와 동일한 시그니처를 가진 함수형 인터페이스를 선택한다. 이 함수형 인터페이스에는 람다 표현식을 할당할 것이다.

 

람다 표현식 작성

선택한 함수형 인터페이스에 맞추어 람다 표현식을 작성한다. 람다 표현식은 함수형 인터페이스의 추상 메서드를 구현하는 코드를 포함해야 한다.

 

기존 메서드 호출 대체

기존 메서드 호출을 새로 작성한 람다 표현식으로 대체한다.


다음은 예제를 통해 이러한 단계를 설명한다. 아래와 같은 인터페이스와 메서드가 있다고 가정해 보자.

// 인터페이스
interface Calculator {
	int add(int a, int b);
}

// 인터페이스 구현체
class CalculatorImpl implements Calculator {
	@Override
	public int add(int a, int b) {
		return a + b;
	}
}

이 예제를 람다 표현식으로 바꿔보자.

가장 먼저 함수형 인터페이스를 만들어 준다.

@FunctionalInterface
interface Calculator {
	int add(int a, int b);
}

다음은 람다 표현식을 작성한다. 인터페이스의 추상 메서드를 구현한다.

Calculator addFunc = (a, b) -> a + b;

마지막으로 기존 메서드를 대체하여 호출해 본다.

public class CalculatorTest {
    public static void main(String[] args) {
        Calculator addFunc = (a, b) -> a + b;

        int result = addFunc.add(3, 5);

        System.out.println(result);
    }
}

인터페이스만 정의했고 구현체를 메인에서 만들어서 바로 실행해 줬다. 여기서 하나 더 추가하면 Integer 클래스에는 static으로 두 값을 더하는 메서드가 정의되어 있다.

이를 이용하면 위 표현식을 다르게 다시 표현할 수 있다.

Calculator addFunc = Integer::sum;

'::'이 키워드는 메서드 레퍼런스를 나타내며 람다 표현식을 더 간결하게 표현할 수 있다.


이번 포스팅에서는 함수형 인터페이를 이용해서 람다 표현식으로 바꾸는 것까지 알아보았다. 현재는 자바 8, 자바 9 이상의 버전을 굉장히 잘 사용하기 때문에 추가적으로 알아두는 것이 좋다. 게다가 스프링 부트 3으로 넘어가면서 자바의 버전이 17까지 올라갔으니 기본과 추가된 내용들은 알고 넘어가면 유용하다.

댓글