Java 8 in Action(2)
23 Oct 2019 | JavaJava 8 in Action(Chapter 3)
이 장의 내용
- 람다란 무엇인가?
- 어디에, 어떻게 람다를 사용하는가?
- 실행 어라운드 패턴
- 함수형 인터페이스, 형식 추론
- 메서드 레퍼런스
-
람다 만들기
- 람다란 무엇인가?
- 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만 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) 간결성
- 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다.
- 어디에, 어떻게 람다를 사용하는가?
-
함수형 인터페이스라는 문맥에서 람다 표현식을 사용할 수 있다.
-
함수형 인터페이스
- 정확히 하나의 추상 메서드를 지정하는 인터페이스. ex) Comparator, Runnable …
- @FunctionalInterface 어노테이션으로 명시적으로 표기한다. 해당 어노테이션을 선언한 인터페이스에 추상 메서드가 한 개 이상이라면 컴파일 에러가 발생한다.
-
ref. http://www.hanbit.co.kr/store/books/look.php?p_code=B1999551123