1. 객체지향 프로그래밍 + 함수형 프로그래밍
1) 람다 계산법 사용된 식을 프로그래밍 언어에 접목
2) 람다식 => 매개변수를 가진 코드 블록 => 익명 내부 객체를 생성해서 만들어진다.
2. 람다식 문법
1) 익명 함수(Anonymous Function)를 생성하기 위한 식이다.
2) 매개 변수와 매개 변수를 이용한 실행문
(매개변수) -> {실행문;} |
예) add() 함수
– (두 수를 입력 받아서 더하는 함수)
int add(int x, int y) { return x+y; } |
– 람다식 표현 방법
(int x, int y) -> {return x+y;} |
– 매개 변수가 하나인 경우 자료형과 괄호가 생략 가능하다.
str -> {System.out.println(str);}; |
– 매개 변수가 두 개 이상인 경우 괄호를 생략할 수 없다.
x,y -> {System.out.println(x+y);}; //오류 |
– 실행문이 한문장인 경우 중괄호 생략이 가능하다.
str -> System.out.println(str); |
– 실행문이 한 문장이더라도 return문(반환 문)은 중괄호를 생략할 수 없다.
str -> return str.length(); //오류 |
– 실행문이 한 문장의 반환문인 경우엔 return과 중괄호를 모두 생략 가능하다.
x,y -> x+y; str -> str.length; |
3. 함수형 인터페이스
1) 람다식을 선언하기 위한 인터페이스이다.
2) 익명 함수와 매개변수만으로 구현되므로 인터페이스는 단 하나의 메서드만을 선언해야 한다.
– 단 하나의 abstract method만을 가지는 인터페이스이다.(Single Abstract Method Interface)
3) @FunctionalInterface 어노테이션 (annotation)
– 함수형 인터페이스라는 의미이다.
– 내부에 여러 개의 메서드를 선언하면 에러가 난다.
4. OOP vs Lambda (문자열 두 개를 연결하여 출력하는 것 구현)
1) 객체지향 프로그래밍으로 구현하기
– 인터페이스 선언
– 인터페이스 구현한 클래스 만들기
– 객체 생성하고 메서드 호출하기
2) 람다식으로 구현하기
5. Functional Interface
1) Supplier
– 주기만 한다.
2) Consumer
– 받기만 한다.
3) BiConsumer
– 여러 개를 받기만 한다.