ch.15 람다식

09Roalwlzm01·2022년 10월 30일

Java

목록 보기
13/15






람다식이란?

  • 함수를 간단한 Expression으로 표현하는 방법
int max(int a, int b){
	return a > b ? a : b
}
(a,b) -> a > b ? a : b
  • 익명 함수라고 불린다.
  • 함수와 메서드의 차이는 근본적으로 동일하나
    • 함수는 클래스에 독립적
    • 메서드는 클래스에 종속적
  • 람다식을 익명함수로 만드는 것인데 익명함수는 일급객체를 가지고 있다는 특징이 있다.(객체취급)
  • 람다식 사용법은 (매개변수...) -> {실행문...}

람다식 작성

  1. 메서드의 이름과 반환타입을 제거하고 ->(arrow, 에로우)를 블록 { } 앞에 추가한다.
int max(int a, int b) => {
	return a > b ? a : b;
}
// 1단계
(int a, int b) -> { return a > b ? a : b }
  1. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능 세미콜론 제외
// 2단계
(int a, int b) -> a > b ? a : b;
  1. 매개변수 타입이 추론 가능하면 생략가능(대부분 가능)
// 3단계
(a, b) -> a > b ? a : b;

주의사항

  1. 매개변수가 하나인 경우, 괄호 생략 가능
// 1단계
(a) -> a * a;
a -> a * a;
  1. 블록 안의 문장이 하나뿐 일때, { } 생략 가능
// 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개일 땐, ()를 써야함
() ->

함수형 인터페이스1

  • 람다식 익명 함수 == 익명 객체
(a,b) -> a > b ? a : b
// == 같은 코드
new Object(){
	int max(int a, int b){
    	return a > b ? a : b;
    }
}

함수형 인터페이스2

  • 함수형 인터페이스 - 단 하나의 추상 메서드만 선언된 인터페이스
  • 함수형 인터페이스 타입의 참조 변수로 람다식을 참조할 수 있음.
MyFunction f = (a,b) -> a > b ? a : b;
int value = f.max(3,5);

함수형 인터페이스3

  • 함수형 인터페이스의 매개 변수
void aMethod(MyFunction f){
	f.myMethod();
}
MyFunction f = () -> System.out.println("엄준식")
aMethod(()->System.out.println("엄준식"));

0개의 댓글