JDK 1.8 이상부터 함수형언어 기능을 추가시켰다.
함수(메소드)를 간단한 식(expression)으로 표현하는 방법.
int max(int a, int b) {
return a > b ? a: b;
}
위의 함수(메서드)를 아래의 식(expression)으로 표현 할 수 있다.
(a, b) -> a > b ? a : b
즉 반환타입과 메서드이름을 지우고 메서드이름과 블록{ } 사이에 ->
기호를 추가하면 된다.
함수와 메서드는 같은 의미이지만 함수
는 클래스에 독립적이고 메서드
는 클래스에 종속적이다.
1) 반환(return)값이 있을경우 식이나 값만 적고 return
, ;
생략 가능.
2) 매개변수(parameter) 타입이 추론 가능하다면, 매개변수 타입
생략 가능.
3) 매개변수(parameter)가 1개일경우 괄호( )
생략 가능. 단 매개변수의 타입이 없을때만 생략 가능하다.
람다식은 익명함수가 아니라 익명객체
이다.
--> 따라서 람다식(익명객체)을 다루려면 참조변수
가 필요하다.
@FunctionalInterface
interface MyFunction { // 함수형 인터페이스(추상메서드가 오직1개)
public abstract int max(int a, int b);
}
public static void main(String[] args) {
MyFunction mf = (a, b) -> a > b ? a : b;
int result = mf.max(3, 5);
}
출처
- 자바의 정석 (책)