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;
}
return
대신 식
으로 대신 할 수 있다. 식의 연산 결과가 자동적으로 반환값이 된다. 이 때 문장이 아닌 식이므로 세미콜론 ;
을 붙이지 않는다.(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 // 에러