메서드를 간단한 식으로 표현한 것
(매개변수1, 매개변수2, ...) -> { 실행문 }
람다식을 통해 익명의 구현 객체가 만들어진다.
// 일반 익명 객체
new Object() {
int plus(x, y) {
return x + y;
}
}
// 람다식
(x, y) -> { x + y }
return 과 ; 를 생략할 수 있다.// 일반 익명객체 대입
Object obj = new Object() { ... }
// 람다식 대입
??? f = ( ... ) -> { ... }
람다식을 변수에 대입해서 사용해야 하는데, 람다식 함수는 이름이 없기 때문에 일반 익명 객체처럼 자기 자신의 타입을 지정할 수가 없다.
함수형 인터페이스는 단 하나의 추상 메서드를 가지는 인터페이스이다.
@FunctionalInterface // 함수형 인터페이스에 붙임 (생략 가능)
public interface Functional {
// 추상 메서드 (1개)
int plus(int x, int y);
}
함수형 인터페이스를 선언하고, 람다식의 타입을 이 함수형 인터페이스로 지정해준다.
// 람다식을 함.인 타입에 대입
Functional f = ( x, y ) -> { ... }
함수형 인터페이스의 추상 메서드와 매개변수 형식이 같아야 한다.
함수형 인터페이스의 추상메서드의 이름으로 호출한다.
// 호출하기
int result = Functional.plus(1, 3);