람다식(Lambda expression)

1996년 자바의 등장 이후로 두 번의 큰 변화가 있었는데 JDK 1.5 에서 Generics, JDK1.8 부터 추가된 람다식의 등장이다.

int[] arr = new int[5];
Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1);

// 이 람다식을 메서드로 표현하면

int method() {
    return (int)(Math.random() * 5) + 1;
}

람다식 작성하기

람다식은 ‘익명 함수’ 답게 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통{} 사이에 → 를 추가한다.


int max(int a, int b) {
    return a > b ? a : b;
}

~~int max~~(int a, int b) **->** {
    return a > b ? a : b;
}
(int a, int b) -> { return **a > b ? a : b**;}

(int a, int b) -> **a > b ? a : b**

(**int** a, **int** b) -> a > b ? a : b

(a, b) -> a > b ? a : b
(a) -> a * a
(int a) -> a * a

a -> a * a      // OK
**int** a -> a * a  // 에러