람다식(Lambda Expression)
람다식이란?
- 정의: 메서드를 하나의 식(expression)으로 표현한 것
- 본질: 함수형 인터페이스를 구현한 익명 객체
- Java 8부터 도입된 함수형 프로그래밍 기능
- 메서드와 달리 이름이 없고, 특정 클래스에 종속되지 않음
- 람다식 자체가 하나의 객체로 취급됨
람다식의 동작 원리
람다식은 컴파일 시 함수형 인터페이스를 구현한 익명 클래스의 인스턴스가 됩니다.
- 람다식 → 익명 클래스 → 익명 객체
- 실제로는 invokedynamic 명령어를 사용하여 더 효율적으로 처리
- 함수형 인터페이스의 추상 메서드와 람다식의 매개변수, 반환타입이 일치해야 함
람다식 작성 규칙
- 기본 형태:
(매개변수) -> { 실행문 }
- 규칙
- 매개변수 타입 생략 가능 (타입 추론)
- 매개변수가 하나면 괄호() 생략 가능 (타입 생략시만)
- 실행문이 하나면 중괄호{} 생략 가능
- return문만 있으면 return과 중괄호 모두 생략
- 매개변수가 없으면 빈 괄호() 필수
함수형 인터페이스(Functional Interface)
정의: 단 하나의 추상 메서드만 가진 인터페이스
- @FunctionalInterface 어노테이션으로 컴파일 타임에 검증
- default 메서드와 static 메서드는 여러 개 가능
- Object 클래스의 메서드 오버라이딩은 추상 메서드로 간주 안함