람다식(Lambda Expression)
- 함수(메서드)를 간단한 '식(expression)'으로 표현하는 방법
- 익명함수(이름이 없는 함수, anonymous function)
- 반환타입과 이름이 없음
- 함수와 메서드의 차이
- 근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향 개념 용어
- 함수는 클래스에 독립적, 메서드는 클래스에 종속적
람다식 작성하기
- 메서드의 이름과 반환타입을 제거하고 '->' 를 블록{} 앞에 추가한다.
- 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 (끝에
;
안붙임)
- 매개변수의 타입이 추론 가능하면 생략 가능 (대부분의 경우 생략가능)
주의사항
- 매개변수가 하나인 경우, 괄호() 생략 가능 (타입이 없을 때만!)
- 블록 안의 문장이 하나뿐일 때, 괄호 {}생략 가능 (끝에
;
안붙임)
람다식의 예제
람다식은 익명 함수? 익명 객체!
- 람다식은 익명함수가 아니라 익명 객체이다.
- 람다식(익명 객체)를 다루기 위한 참조변수가 필요. 참조변수의 타입은?
-> 자바에서는 메서드만 존재할 수 없기 때문에 익명객체 new Object(){}안에 넣어서 표현해야 한다.
하지만 obj라는 리모컨에 max()를 건들 수 없기 때문에 함수형 인터페이스가 필요함.