[자바/심화] 람다식 (Lambda Expression)

람다식 (Lambda Expression)

- 자바 8버전에서 처음 도입되었으며, 함수형 프로그래밍 스타일을 지원하는 표현식이다.

- 익명 클래스를 더 간단하고 간결하게 작성할 수 있으며, 주로 추상 메소드가 하나만 있는 인터페이스와 함께 사용된다.

- 메소드 대신 하나의 식으로 표현하며, 익명 함수 (Anonymous function) 이라고도 한다.

- 코드가 간결해지고, 코드 가독성과 생산성이 높아진다는 장점을 지닌 반면, 재사용이 불가능하고 디버깅이 어렵고 재쉬함수로는 맞지
  않다는 단점을 지니고 있다.

 

람다식 기본 문법

- 자바에선 람다식을 익명 객체를 이용해서 구현하며, "->" 기호를 이용해서 객체 생성 없이 바로 추상 메소드를 함수처럼 구현한다.

- 람다식 이전

public abstract 리턴 타입 메소드명 (입력매개변수, ...);

- 람다식 사용

(입력매개변수, ...) -> {
	// 실행문
}

 

람다식 기본 형식

매개변수와 리턴 타입이 없는 매소드

// 람다식 미사용
void method() {
	System.out.println("method() 호출");
}

// 람다식으로 변환
() -> {
	System.out.println("method() 호출");
}

매개변수가 있고 리턴 타입이 없는 매소드

// 람다식 미사용
void method(int a) {
	System.out.println("a");
}

// 람다식으로 변환
(int a) -> {
	System.out.println("a");
}

매가변수가 없고 리턴타입만 있는 경우

// 람다식 미사용
int method() {
	return 24;
}

// 람다식으로 변환
() -> {
	return 24;
}

매개변수와 리턴 타입이 있는 경우

// 람다식 미사용
int method(int a, int b) {
	return a + b;
}

// 람다식으로 변환
(int a, int b) -> {
	return a + b;
}

 

람다식 기본 예제

interface ComputrTool {
	public abstract int compute2(int x, int y);
}

public class Main {
	public static void main(String[] args) {
    	// 기존 방식
        ComputrTool computrTool1 = new ComputrTool() {
        	@Override
            public int compute(int x, y) {
            	return x + y;
            }
        };
        System.out.println(computrTool1.compute(1, 2));    // 3
        
        // 람다식
        ComputrTool computrTool2 = (x, y) -> { return x + y; }
        System.out.println(computrTool2.compute(1, 2));    // 3
    }
}

⊙ 참고 문헌

  1. 이병승, 「초보 개발자를 위한 자바:한 권으로 배우는 자바 마스터 가이드 북」, 영진닷컴, 2024, p1205 - 1207
  2. 마종현, 「제로베이스 백엔드 취업 파트타임 스쿨 5기:Part 01. Java 기초-Chapter 01. Java 프로그래밍-16. 람다식」, 제로베이스, 2024, https://zero-base.co.kr/