메소드를 하나의 간결한 식으로 표현한 것
메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지므로 람다식을
'익명 함수'(anonymous function)
람다식은 FunctionalInterface의 조건을 충족 해야 사용이 가능
FunctionalInterface : 오직 하나의 메소드 선언을 갖는 인터페이스
메소드의 이름과 반환타입을 제거하고 매개변수 선언부와 body{ } 사이에 ->를 추가
+
return문 대신 식(expression)으로 대신할 수 있다. 식의 연산 결과가 자동으로 반환값이 된다.
문장이 아닌 식으로 끝에 세미콜론( ; )을 붙이지 않는다.
1. 기본적인 작성 규칙
- 이름과 반환타입은 작성하지 않는다. (anonymous function)
2. 매개변수
- 추론이 가능한 매개변수의 타입은 생략할 수 있다.
- 단, 매개변수가 두 개 이상일 경우 일부의 타입만 생략하는 것은 허용되지 않는다.
- 선언된 매개변수가 하나인 경우 괄호( )를 생략 할 수 있다.
- 단, 매개변수의 타입을 작성한 경우엔 매개변수가 하나라도 괄호( )를 생략할 수 없다.
3. body { }
- return문(return statement) 대신 식(expression)으로 대체할 수 있다.
- 식(expression)의 끝에 세미콜론(;)은 붙이지 않는다.
- 괄호{ } 안의 문장이 하나일 때는 괄호{ }를 생략할 수 있다.
- 이 때, 문장의 끝에 세미콜론(;)은 붙이지 않는다.
- 그러나 return문은 괄호를 생략할 수 없다.
함수형 인터페이스는 람다식을 다루는 인터페이스이다. @FunctionalInterface 어노테이션을 사용한다.람다식은 실제로 메소드 그 자체가 아닌 익명 클래스의 객체와 동등하다.익명 객체의 메소드와 람다식의 매개변수, 반환값이 일치하면 익명 객체를 람다식으로 대체 가능