메서드를 정의하려면, 클래스 내에 정의해야 함.
메서드의 이름 생략
반환형은 함수형 인터페이스에 정의된 대로 자동으로 유추되어 적을 필요 없음
예시 )
기존 방식
int add(int a, int b) {
return a+ b;
}
람다식
//메서드의 이름 생략, 반환형태 생략
(a, b) -> {
return a + b;
}
//중괄호와 return은 단일 표현식일 때 생략 가능
(a, b) -> a + b;
함수형 인터페이스 필요
함수형 인터페이스를 익명 클래스로 구현
익명구현 객체를 간단히 표현한 것이 람다식
예시 )
함수형 인터페이스
@FunctionalInterface // 함수형 인터페이스임을 명시
Interface myFunction{
int apply(int a, int b)
}
익명 함수
MyFunction sum = new myFunction(int a , int b) {
@Override
public int apply(int a, int b){
return a+b;
}
}
람다식
MyFunction sum = (a, b) -> a + b;
//(a, b) - apply함수의 매개변수
//a + b - apply함수의 구현내용
*익명 구현 객체
클래스 이름 없이 인터페이스나 추상 클래스를 바로 구현한 객체
클래스 정의 없이 즉석에서 생성
중괄호 안에는 인터페이스의 추상 메서드를 구현하는 내용 정의