Java 8 in Action(2)

|

Java 8 in Action(Chapter 3)

이 장의 내용

  1. 람다란 무엇인가?
  2. 어디에, 어떻게 람다를 사용하는가?
  3. 실행 어라운드 패턴
  4. 함수형 인터페이스, 형식 추론
  5. 메서드 레퍼런스
  6. 람다 만들기

  7. 람다란 무엇인가?
    • 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만 1) 파라미터 리스트 2) 바디 3) 리턴 타입 4) 발생할 수 있는 예외 리스트는 가질 수 있다.

// 람다 표현식 기본 문법
1. (parameters) -> expression
2. (parameters) -> {statements;}


// 람다 표현식 1
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
--------------------    ----------------------------------------
    파라미터 리스트          바디(return 함축되어 있으므로 리턴 타입은 int)

// 람다 표현식 2
(int x, int y) -> { System.out.println("Result:");
                    System.out.println(x+y); }

--------------    ---------------------------------------------
 파라미터 리스트                   바디(리턴 타입은 void)

// 람다 표현식 3
  ()        ->     42
-------           ----
파라미터 x          리턴 타입은 int
람다의 특징
    1) 익명
        - 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다.

    2) 함수
        - 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다.

    3) 전달
        - 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다.

    4) 간결성
        - 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다.
  1. 어디에, 어떻게 람다를 사용하는가?
    • 함수형 인터페이스라는 문맥에서 람다 표현식을 사용할 수 있다.

    • 함수형 인터페이스

      • 정확히 하나의 추상 메서드를 지정하는 인터페이스. ex) Comparator, Runnable …
      • @FunctionalInterface 어노테이션으로 명시적으로 표기한다. 해당 어노테이션을 선언한 인터페이스에 추상 메서드가 한 개 이상이라면 컴파일 에러가 발생한다.

ref. http://www.hanbit.co.kr/store/books/look.php?p_code=B1999551123