-
[JAVA] 람다식 (lamda Expression)와 함수형 인터페이스(Functional Interface)JAVA 2021. 10. 4. 14:48
람다는 Java8의 추가된 기능 중 하나이다.
람다 표현식(lamda expression)은 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다.
람다식 사용법
람다의 기본형태는 이렇다.
(매개변수, ...) -> {실행문 ...}
# 예제 1
int max(int a, int b) { // 기본 표현식 return a > b ? a : b; } (a, b) -> a > b ? a : b // 람다 표현식
# 예제 2
void printVar(String name, int i) { // 기본 표현식 System.out.println(name + " = " + i); } (name, i) -> System.out.println(name + " = " + i) // 람다 표현식
# 예제 3
int roll() { // 기본 표현식 return (int) (Math.random() * 6); } ( ) -> (int) (Math.random() * 6) // 람다 표현식
이렇게 람다식이 등장하게 된 이유는 코드의 간소화, 가독성을 높이기 위함이다.
람다식의 특징
- 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수 취급된다.
- 람다식으로 선언된 변수명은 다른 변수명과 중복되지 않는다.
람다식의 장점
- 코드가 간결하다.
- 가독성이 높아 개발자의 의도가 선명하다.
- 함수를 별도로 만들지 않아도돼 생산성이 높아진다.
- 패럴 프로그래밍에 용이하다.
함수형 인터페이스
람다 표현식을 사용할 때에는 람다 표현식을 저장하기 위한 참조 변수의 타입을 결정해야만 한다.
(참조변수의 타입 참조변수의 이름 = 람다 표현식)
위의 형태에 따라 람다표현식을 하나의 변수에 대입할 때 사용하는 참조 변수의 타입을 함수형 인터페이스라고 합니다.
함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 써 명시를 하며, 추상클래스와는 달리 단 하나의 추상 메소드만을 가져야합니다.
# 예제 1
@FunctionalInterface interface Calc{ // 함수형 인터페이스 선언 public int min(int x, int y); } public class Lamda02{ Calc minNUm = (x, y) -> x < y ? x : y; // 추상 메소드 구현 System.out.println(minNum.min(3, 4)); // 함수형 인터페이스 사용 }
'JAVA' 카테고리의 다른 글
[Java]Optional 활용법 (0) 2021.12.17 [Java] Optional (0) 2021.12.17 [Java] java8 stream (0) 2021.12.17 [Java] 메소드 참조(method reference) (0) 2021.12.16 [JAVA] 익명클래스(Anonymous class) (0) 2021.10.03