13. 람다식
람다식
익명 함수를 생성하기 위한 식으로 객체지향언어보다는 함수지향 언어에 가깝다.
람다식은 단순히 메소드를 선언하는 것이 아니라 이 메소드를 가지고 있는 객체를 생성해 낸다.
자바코드가 매우 간결해진다.
람다식 → 매개 변수를 가진 코드 블록 → 익명 구현 객체
//익명구현객체
Runnable runnable = new Runnable() {
public void run() {...}
}
//위의 익명구현 객체를 람다식으로 표현
Runnable runnable = () -> {...}
표준 API의 함수적 인터페이스
자바에서 제공되는 표준 API에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용해서 익명 구현 객체로 표현이 가능하다.
자바 8부터는 함수적 인터페이스를 java.util.function 표준 API 패키지로 제공한다.
종류 | 추상 메소드 특징 | |
Consumer | 매개값 O, 리턴값 X | 매개값 → Consuber |
Supplier | 매개값 X, 리턴값 O | Supplier → 리턴값 |
Function | 매개값 O, 리턴값 O (주로 매개값을 리턴값으로 타입변환) |
매개값 → Funtion → 리턴값 |
Operator | 매개값 O, 리턴값 O (주로 매개값을 연산하고 결과를 리턴) |
매개값 → Operator → 리턴값 |
Predicate | 매개값 O, 리턴값 boolean (매개값을 조사해서 true/false를 리턴) |
매개값 → Predicate → 리턴값 |
메소드 참조
메소드 참조(Method References)는 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어,
람다식에서 불필요한 매개 변수를 제거하는 것이 목적이다.
//단순 매개값을 전달하는 람다식
(left, rigth) -> Math.max(left, rigth);
//위의 람다식을 메소드 참조로 표현
Math :: max;
생성자 참조
생성자를 참조한다는 것은 객체 생성을 의미한다.
//단순 객체 생성 람다식
(a, b) -> { return new Myclass(a, b); }
//위의 람다식을 생성자 참조로 표현
Myclass :: new
[자문자답 문제]
1. 람다식이란? 장점은?
답)
람다식 : 익명 함수를 생성하기 위한 식
장점 : 병렬 처리와 이벤트 지향 프로그래밍에 적합하기 때문이다.함수지향 언어에 가깝고 자바 코드가 간결해진다.
2. 메소드 참조를 사용하는 이유는?
답)
메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어,
람다식에서 불필요한 매개 변수를 제거하는 것이 목적이다.
해당 포스트는 이것이 자바다(신용권의 Java 프로그래밍 정복)을 읽은 후 기록한 내용입니다.
참고서적링크 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=50563128
이것이 자바다
15년 이상 자바 언어를 교육해온 자바 전문강사의 노하우를 아낌 없이 담아낸 자바 입문서. 저자 직강의 인터넷 강의와 Q/A를 위한 커뮤니티(네이커 카페)까지 무료로 제공하여 자바 개발자로 가
www.aladin.co.kr