🍒 개요
람다 표현식은 자바 8에서 도입된 기능으로, 간결한 방식으로 메소드를 표현할 수 있게 해준다. 기본적으로 람다 표현식은 익명 함수(이름이 없는 함수)를 정의하는데 사용된다. 람다는 단 하나의 추상 메소드를 가진 인터페이스, 즉 함수형 인터페이스와 함께 사용된다.
🍍 람다 표현식의 기본 문법
자바에서 람다식은
[ 매개변수 ] → { 표현식 }
구문을 사용하여 작성된다.- 람다식은 0개 이상의 매개 변수를 가질 수 있다.
- 화살표
→
는 람다식에서 매개 변수와 몸체를 구분한다.
- 매개 변수의 형식을 명시적으로 선언할 수 있다.
- 문맥에서 타입을 추정할 수 있다. 즉,
int a
는a
와 동일하게 된다. 빈 괄호는 매개변수가 없다는 뜻이다.
- 단일 매개 변수이고 타입은 유추가 가능한 경우는 괄호를 사용하지 않을 때도 있다.
ex)
a → return a*a
와 같이 표현- 몸체에 하나 이상의 문장이 있으면 중괄호로 묶는다.
람다 표현식 예제
🍑 람다식의 활용
람다 표현식은 함수를 변수로 전달하는 수도 있지만, 실제로는 익명 클래스(Anonymous Class)를 대체하는 데에서 가장 널리 사용되며, 특히 함수형 인터페이스 (Functional Interface)의 구현체를 처리할 때 유용하다. 이는 자바에서는 특별한 유형으로 단 하나의 메소드를 가지고 있는 인터페이스를 일컫는다. 그러므로 일반적으로 표현할 때 하나의 메소드를 위해서 구현해야될 코드가 많았으나, 이러한 특성 때문에 람다 표현식과 밀첩하게 연관이 되어있다.
ActionListener 인터페이스에서의 활용
- 위와 같이 람다 표현식이 없었다면
actionPerformed
의 기능을 사용하기 위해서Actionlistener
의 이름 없는 객체를 생성하고 오버라이딩을 해야 사용할 수 있었다. 하지만 람다표현식의 등장으로 더 간결하고 직관적인 표현이 가능해졌다.
- 람다 표현식으로 5줄이 필요했던 식을 두 줄로 요약할 수 있게 되었다.
- 이 식에서
addActionListener
를 호출하면서 이 메소드가ActionListener
타입의 매개변수를 요구하기 때문에, 해당 메소드가 함수형 인터페이스를 구현하는 것이라 파악이 가능하고, 람다식으로 요약이 가능하다.
Runnable 인터페이스에서의 활용
- 해당 예시에서도 마찬가지로
run()
메소드를 실행하기 위해서Runnable
객체가 익명으로 생성이 되었다. 이런 경우에는 람다 표현식으로 요약이 가능하다.
- 한 줄로 깔끔하게 람다표현식으로 요약이 되었다.
- 받는 매개변수가 없다면은
( ) → { 표현식 }
으로 요약할 수 있다.
Iterable 인터페이스에서의 활용
- 람다식의 이용하면 배열의 모든 요소를 출력하는 코드에서
ForEach()
와 같은 부분에서 함수형 프로그래밍을 사용할 수 있다.
- forEach구문에 비해서는 조금 더 직관적으로 표현이 되었다.
Share article