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