자바 8 - 람다식
1. 람다식이란 무엇인가?
자바에서 함수적 프로그래밍을 위해 자바 8부터 람다식을 지원하게 되었다.
람다식을 사용함으로써 코드가 매우 간결해지고, 필터링을 통해 결과를 쉽게 집계할 수 있게 되었다.
람다식은 ()->{....};의 형식으로 괄호안에는 매개변수가, 중괄호 안에는 실행코드가 들어가게 된다.
2. 람다식은 인터페이스 변수에 대입이 가능하다.
람다식은 기본적으로 인터페이스의 익명 구현 객체를 생성하게 된다. 하지만 모든 인터페이스에 대하여 사용할 수는 없다. 두 개 이상의
추상 메소드가 존재하는 인터페이스는 람다식을 이용하여 구현할 수 없다(오직 한 개의 메소드만 있는 인터페이스만 가능하다는 소리)
3. 람다식은 클래스의 필드 , 메소드 및 로컬 변수를 사용할 수 있다.
클래스의 필드나 메소드의 경우 제약 없이 사용이 가능하지만, 로컬 변수는 제약이 있다. 로컬 변수 혹은 매개 변수를 읽는 것 까지는 가능
하지만 이 변수의 값들을 변경할 수 없다.
4. 표준 API의 함수적 인터페이스에 관하여 사용이 가능하다.
즉 하나의 메소드만을 가지고 있는 인터페이스 또한 익명 구현 객체로 표현이 가능하다는 소리이다.
5. 람다식은 메소드를 참조할 수 있다.
예를 들어 두 개의 값을 더하는 람다식이라고 하면 (a,b)->{return a+b};라는 익명 구현 객체를 만들수도 있지만, Math::max; 라는 식으로도
Math의 메소드를 참조할 수 있다.
참조할 때에도 법칙이 있다.
정적 메소드(static)를 참조하는 경우 [클래스 :: 메소드], 일반 메소드일 경우 [인스턴스 :: 메소드]로 표현이 가능하다.
6. 람다식은 생성자 참조도 가능하다
생성자를 참조할 경우에는 [클래스 :: new]의 형태로 기술한다