공부하는 스누피

[Java] 람다식 Lambda 본문

Languages/Java

[Java] 람다식 Lambda

커피맛스누피 2021. 4. 4. 21:16

람다란?

람다식(또는 람다)은 추상 메서드를 하나만 가진 인터페이스의 인스턴스이다. 자바 8부터 등장했으며, 기존 익명 클래스와 비슷한 역할(함수형 프로그래밍)을 하지만 훨씬 간결하다.

 

// 익명 클래스
Collection.sort(arr, new Comparator<T>(){ ... });

// 람다식
Collection.sort(arr, (o1, o2)->{...});

 

익명클래스 vs 람다

  람다 익명 클래스
인스턴스에 접근할 수 있는가? X O
this 키워드 바깥 인스턴스 익명클래스 인스턴스 자신

=> 따라서 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들 때 사용하는 것이 좋다.

 

주의할 점

  • 타입을 쓰지 않았을 때 IDE에서 에러가 났을 때를 제외하고, 람다의 모든 매개변수 타입은 생략한다.
  • 매개변수 타입을 생략하기 때문에 제네릭을 사용하지 못한다.
  • 람다는 문서화하지 못한다. 코드 자체로 동작이 명확하게 설명되지 않으면 쓰지 말아야 한다.
  • 세 줄 안에 끝나야 한다.

메서드 참조 표현식 (method reference expression)

- 람다식에서 파라미터를 중복해서 사용할 때 쓸 수 있다.

- 더 간결한 코드를 짤 수 있다. 

- 람다와 달리 제네릭 함수 타입을 구현할 수 있다.

- [인스턴스]::[메소드명]으로 쓸 수 있다.

 

참조 유형

1. 정적 메서드를 가리키는 메서드 참조

2. 한정적 인스턴스 메서드 참조: 참조 대상을 특정한다. (인수 일치)

3. 비한정적 인스턴스 메서드 참조: 참조 대상을 특정하지 않는다. (스트림에 쓰인다)

4. 클래스 생성자를 가리키는 메서드 참조

5. 배열 생성자를 가리키는 메서드 참조

 

 

 

(참고)

yoonbumtae.com/?p=2776

 

자바(Java) 8: 람다식에서 콜론 두개 (:: - 이중 콜론 연산자, 메소드 참조 표현식)의 용도와 사용법

자바8 람다식: 자바(Java): 람다식 (Lambda Expression) 기초 (Java 8 이상)   콜론 두개 (:: - 이중 콜론 연산자)의 정식 명칭은 메소드 참조 표현식(method reference expression)이며, 결론부터 말하자면 람다식에

yoonbumtae.com

Effective Java 3/E (2018). Joshua B(이복연 옮김). 프로그래밍 인사이트 

Comments