Java

13. 람다식

CRN 2021. 9. 21. 14:53

람다식

익명 함수를 생성하기 위한 식으로 객체지향언어보다는 함수지향 언어에 가깝다.

람다식은 단순히 메소드를 선언하는 것이 아니라 이 메소드를 가지고 있는 객체를 생성해 낸다.

자바코드가 매우 간결해진다.

 

람다식 → 매개 변수를 가진 코드 블록 → 익명 구현 객체
//익명구현객체
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