람다식
- 자바에서 함수 프로그래밍(functional programming)을 구현하는 방식
- 자바 8부터 지원
- 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행
- 함수형 프로그래밍
순수 함수(pure function)을 구현하고 호출함으로써 외부 자료에 부수적인 영향을 주지 않고 매개 변수만을 사용하도록 만든 함수
함수를 기반으로 구현
입력 받은 자료를 기반으로 수행되고 외부에 영향을 미치지 않으므로 병렬처리등이 가능
안정적인 확장성 있는 프로그래밍 방식
람다식 구현하기
- 익명 함수 만들기
- 매개 변수와 매개 변수를 활용한 실행문으로 구현
(매개변수) -> {실행문;}
int add(int x, int y){
return x+y;
}
(int x, int y) -> {return x_y;}
- 함수의 이름 반환 형을 없애고 -> 사용
- {}까지 실행문을 의미한다.
- 매개 변수가 두 개인 경우 괄호 생략 불가
- 중괄호 안의 구현부가 한 문장이라도 return문의 중괄호를 생략 불가
함수형 인터페이스
- 람다식을 선언하기 위한 인터페이스
- 익명 함수와 매개 변수만으로 구현되므로 단 하나의 메서드만을 가져야함
(두 개 이상의 메서드의 경우 어떤 메서드의 호출인지 모호해 짐)
- @FunctionalInterface
함수형 인터페이스라는 의미, 여러 개의 메서드 선언시 에러
익명 객체를 생성하는 인터페이스
- 자바는 객체 지향 언어로 객체를 생성해야 메서드 호출 됨
- 람다식으로 메서드 구현하고 호출하면 내부에서 익명 클래스가 생성됨
- 람다식에서 외부 메서드의 지역변수는 상수로 처리됨(지역 내부 클래스와 동일 원리)