람다 표현식
- 익명 함수(이름이 필요 없는 함수)의 일종으로 동작 파라미터 형식의 코드를 간결하고 유연하게 구현할 수 있다.
- 람다식은 반환값으로 함수형 인터페이스를 반환한다.
함수형 인터페이스란?
- 오직 하나의 추상 메서드만 가지는 인터페이스
- 람다 표현식으로 함수형 인터페이스의 추상 메서드 구현을 직접 전달할 수 있다.
(함수형 인터페이스를 기대하는 곳에서만 람다 표현식을 사용할 수 있다.)
함수형 인터페이스의 추상 메서드는 람다 표현식의 시그니처(메서드 명과 파라미터의 순서, 타입, 개수..)를 묘사하는데
이를 통해 람다 표현식의 정확한 반환 타입을 알 수 있다. 그러므로 람다 표현식을 잘 활용하기 위해서는 자바 API에서
제공하는 함수형 인터페이스의 추상 메서드 시그니처를 잘 알아야 한다.
아래는 함수형 인터페이스와 람다 표현식을 이용한 간단한 예시이다.
1. (반환값이 없는) 추상 메서드 run()을 가지는 함수형 인터페이스 Runnable
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
2. Runnable 인터페이스의 인스턴스를 인자로 받는 process 메서드
public static void process(Runnable runnable) {
runnable.run();
}
3. 람다 표현식을 통한 함수형 인터페이스의 인스턴스 정의
Runnable runnable = () -> System.out.println("Hello World");
4. process 메서드에 값 전달
process(runnalbe);
process(() -> System.out.println("Hello World 1")); // 람다 표현식을 직접 전달도 가능하다.
// 출력 결과
// Hello World
// Hello World 1
Reference
참고 도서명: 모던 자바 인 액션
https://mangkyu.tistory.com/113
https://itkjspo56.tistory.com/m/289
'book > modern java in action' 카테고리의 다른 글
Chapter 8 컬렉션 API 개선 (0) | 2023.01.23 |
---|---|
Chapter 6 스트림으로 데이터 수집(Collect, Collector, Collectors) (0) | 2023.01.07 |
Chapter 5 스트림 활용 (0) | 2022.12.30 |
Chapter 4 스트림 소개 (0) | 2022.12.24 |
Chapter 2 동작 파라미터화 코드 전달하기 (0) | 2022.12.03 |
댓글