람다 표현식 #
람다? #
람다 표현식(이하 람다)는 메서드로 전달할 수 있는 익명함수를 단순화 한 것이다.
람다 표현식(lambda expression)이란 간단히 말해 메소드를 하나의 식으로 표현한 것입니다.
람다는 {parameters} {->} {body}
의 형태로 작성된다.
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());
자바 8에서 지원하는 5 가지 람다 표현식의 예제 #
1. (String s) -> s.length()
2. (Apple a) -> a.getWeight() > 150
3. (int x, int y) -> {
System.out.println(x, y);
}
4. () -> 42
5. (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
표현식이 한 개인데, return 문을 사용해야 한다면 블록{}
으로 감싸야한다.
(String s) -> return s + i; // X
(String s) -> { return s + i; } // O
함수형 인터페이스 #
함수형 인터페이스는 오직 하나의 추상메서드만을 갖는 인터페이스
이다.
Predicate, Compator, Runnable, Function 등이 있다.
함수형 인터페이스를 활용한다는 것은, 람다 표현식을 적극 활용할 수 있다는 것이다. (다르게 말하면 람다의 표현식이 함수형 인터페이스의 인스턴스(함수형 인터페이스를 구현한 인스턴스)가 될 수 있다는 것이다.)