본문 바로가기

책/모던 자바 인 액션

3장 람다 표현식

❗ 본 포스팅은 타이핑 공부법으로 작성하였습니다. 그렇기에 부족한 점이 존재할 수 있습니다.

3.1 람다란 무엇인가

  • 익명 함수를 단순화한 것
  • 람다함수에는 파라미터, 바디, 리턴값, 발생할 수 있는 예외 리스트를 가질 수 있다.

3.2 어디에, 어떻게 람다를 사용할까

  • 함수형 인터페이스를 이용해서 람다를 이용할 수 있다.
  • 함수형 인터페이스는 추상메소드 하나만을 가지는 인터페이스를 말한다.
  • 함수 디스크럽터는 추상메소드의 시그니처를 의미한다.
  • 람다(함수)를 함수형 인터페이스의 인스턴스라고 생각하면 된다.

3.3 람다 활용: 실행 어라운드 패턴

  • 함수형 인터페이스를 선언하고(혹은 미리 만들어져 있는 Predicate, Function, Supplier, Consumer와 같은 함수형 인터페이스를 이용해도 좋다.) 람다를 인자로 받고 싶어하는 메서드의 인자에 넣는다.
  • 해당 메서드에서는 함수형 인터페이스에 존재하는 추상메소드를 이용하면 된다.
  • 해당 메소드를 호출할때는 추상 메소드의 형식에 맞게 구현하면 된다.

3.4 함수형 인터페이스 사용

  • Predicate<T>는 test 메소드를 지원하며 T타입의 인자를 받아  boolean 형식의 반환값을 가진다.
  • Consumer<T>는 accept 메소드를 지원하며 T타입의 인자를 받아 void를 반환한다.
  • Function<T, R>는 apply 메소드를 지원하며 T타입의 인자를 받아 R타입의 반환형식을 가진다.
  • generic에는 primitive 타입이 들어갈수 없다. 

3.5 형식 검사, 형식 추론, 제약

  • 람다식의 기본 문법은 다음과 같다.
    • (Integer a) -> {return a + 1;}
  • 이때 파라미터의 형식을 추론 가능하면 형식을 생략할 수 있다.
    • (a) - > {return a + 1;}

3.6 메서드 참조

  • 자바 8부터 기존 메서드의 함수도 메서드 참조로 람다처럼 쓸 수 있다.
    • Integer::parseInt 처럼 쓸 수 있다.

3.8 람다 표현식을 조합할 수 있는 유용한 메서드

  • 자바에서는 함수(람다)의 출력값을 다른 함수(람다)의 입력값을 줄 수 있는 방법이 존재한다.
  • 일종의 메서드 체이닝과 같다 생각하면 될 듯
  • 자바에서 미리 제공하는 Predicate와 Function은 조합을 제공한다.
  • Predicate는 negate(), and(), or() 메소드를 제공한다.
  • Function은 andThen(), compose() 메소드 두개를 제공한다. 

 

' > 모던 자바 인 액션' 카테고리의 다른 글

8장 컬렉션 API 개선  (0) 2024.06.12
7장 병렬 데이터 처리와 성능  (0) 2024.06.11
6장 스트림으로 데이터 수집  (0) 2024.06.09
5장 스트림 활용  (0) 2024.06.07
4장 스트림 소개  (0) 2024.06.05