




- 함수를 간단한 Expression으로 표현하는 방법
int max(int a, int b){ return a > b ? a : b } (a,b) -> a > b ? a : b
- 익명 함수라고 불린다.
- 함수와 메서드의 차이는 근본적으로 동일하나
- 함수는 클래스에 독립적
- 메서드는 클래스에 종속적
- 람다식을 익명함수로 만드는 것인데 익명함수는 일급객체를 가지고 있다는 특징이 있다.(객체취급)
- 람다식 사용법은 (매개변수...) -> {실행문...}
- 메서드의 이름과 반환타입을 제거하고
->(arrow, 에로우)를 블록 { } 앞에 추가한다.int max(int a, int b) => { return a > b ? a : b; } // 1단계 (int a, int b) -> { return a > b ? a : b }
- 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 세미콜론 제외
// 2단계 (int a, int b) -> a > b ? a : b;
- 매개변수 타입이 추론 가능하면 생략가능(대부분 가능)
// 3단계 (a, b) -> a > b ? a : b;
- 매개변수가 하나인 경우, 괄호 생략 가능
// 1단계 (a) -> a * a; a -> a * a;
- 블록 안의 문장이 하나뿐 일때, { } 생략 가능
// 2단계 (int i) -> { System.out.println(i); } (int i) -> Sytem.out.println(i); // 1단계 + 2단계 (i) -> System.out.println(i); i -> System.out.println(i); // 매개변수가 0개일 땐, ()를 써야함 () ->
- 람다식 익명 함수 == 익명 객체
(a,b) -> a > b ? a : b // == 같은 코드 new Object(){ int max(int a, int b){ return a > b ? a : b; } }
- 함수형 인터페이스 - 단 하나의 추상 메서드만 선언된 인터페이스
- 함수형 인터페이스 타입의 참조 변수로 람다식을 참조할 수 있음.
MyFunction f = (a,b) -> a > b ? a : b; int value = f.max(3,5);
- 함수형 인터페이스의 매개 변수
void aMethod(MyFunction f){ f.myMethod(); } MyFunction f = () -> System.out.println("엄준식") aMethod(()->System.out.println("엄준식"));