○ 파라미터와 리턴 값이 있는 람다식
이번에는 파라미터와 리턴 값이 모두 존재하는 람다식에 대해서 작성 방법을 살펴보겠습니다. 당연히 파라미터와 리턴 식을 작성해 주면 되는 간단한 문제이지만, 이 경우에도 람다식에서 생략이 가능한 부분들이 있기 때문에 몇 가지 작성 방식에 차이가 발생합니다.
머리가 복잡하다면 일단 기본형을 먼저 익혀두고, 생략하는 방법을 적용해 나갑시다.
우선 인터페이스에서 다음과 같이 추상 메서드가 선언되었습니다. 리턴 타입은 int, 파라미터도 두 개가 존재합니다.
@FunctionalInterface
public interface MyFunctionalInterface {
public int method(int x, int y);
}
이 인터페이스를 람다식으로 표현하는 여러 가지 방식을 바로 실행 코드에서 적용해 살펴보겠습니다.
public class ExampleMain {
public static void main(String[] args) {
MyFunctionalInterface fi;
fi = (x, y) -> {
int result = x + y;
return result;
};
System.out.println(fi.method(3, 5));
fi = (x, y) -> { return x + y; };
System.out.println(fi.method(3, 5));
fi = (x, y) -> x + y;
System.out.println(fi.method(3, 5));
fi = (x, y) -> sum(x, y);
System.out.println(fi.method(3, 5));
}
public static int sum(int x, int y) {
return (x + y);
}
}
/* 출력
8
8
8
8
*/
위의 코드에서 첫 번째 fi 람다식은 추상 메서드 재정의가 두 줄로 이루어졌습니다. 그리고 fi.method(3, 5)라는 형식으로 실행되었습니다.
세 번째 fi 람다식을 보겠습니다. 중괄호 없이 x + y; 만이 작성되었는데, 만일 람다식에서 return 문 하나만 존재한다면 해당 식은 return 문이 생략이 가능합니다. 즉, 해당 식은 두 번째와 같은 코드를 의미합니다.
이 원칙은 네 번째 fi 람다식에도 동일하게 적용됩니다. 따로 존재하는 static 메서드 sum(x, y)를 return 하라는 의미가 됩니다. 여기서도 return과 중괄호가 생략되어 (x, y) -> sum(x, y); 형태로 작성된 것입니다.
'Programming > JAVA' 카테고리의 다른 글
람다식(3) - 클래스 멤버, 로컬 변수의 사용 2 (0) | 2023.05.24 |
---|---|
람다식(3) - 클래스 멤버, 로컬 변수의 사용 1 (0) | 2023.05.18 |
람다식(2) - 람다식의 타겟 타입, 함수적 인터페이스 2 (0) | 2023.05.15 |
람다식(2) - 람다식의 타겟 타입, 함수적 인터페이스 1 (1) | 2023.05.12 |
람다식(1) - 람다식의 정의와 기본 문법 (0) | 2023.05.10 |