#4 Lambda

charco·2021년 5월 20일
0

나도TIL

목록 보기
5/55

Lambda

람다식은 자바 8버전부터 추가되었다.
람다식이 추가되며 자바는 이제 함수형 언어의 특성도 갖게 되었다.

람다식이 무엇일까?

public int max(int a, int b){
	return a > b ? a : b;
}

두 정수형 파라미터의 최댓값을 반환하는 메서드다.
이를 람다식으로 바꾸는 과정은 아래와 같다.

(int a, int b) -> {
	return a > b ? a : b;
}

(a , b) -> {
	return a > b ? a : b;
}
//람다식
(a , b) -> {a > b ? a : b};

한눈에 봐도 알아보기 쉽고 간결해졌다.

그런데 그냥 이렇게만 선언하면 되는 것일까?
그러면 어떻게 호출해야할까

함수형 인터페이스

함수형 인터페이스는 추상 메서드를 하나만 갖고있다.
람다식은 익명클래스의 객체와 동등한 존재이기 때문에
함수형 인터페이스를 구현해 그 참조값을 이용해 호출하면 된다.
방법은 아래와 같다.

interface MyInterface{
	int max(int a, int b);
}

만약 위의 인터페이스를 익명클래스로 구현한다면 이렇게 된다.

MyInterface f1 = new MyInterface(){
	@Override
    int max(int a, int b){
    	return a > b ? a : b;
    }
}
f1.max(10,20); // 20

람다식으로 하면 훨씬 간결해진다.

MyInterface f1 = (a , b) -> {a < b ? a : b};
f1.max(10,20); // 20

파라미터 타입이 추론 가능할때는 위처럼 생략할 수 있다.
대부분의 경우에 가능하다.

profile
아직 배우는 중입니다

0개의 댓글