JAVA 람다 표현식 이해하기

#JAVA016 #람다표현식 #함수형인터페이스 #익명클래스
Jan 04, 2024
JAVA 람다 표현식 이해하기
 

🍒 개요

람다 표현식은 자바 8에서 도입된 기능으로, 간결한 방식으로 메소드를 표현할 수 있게 해준다. 기본적으로 람다 표현식은 익명 함수(이름이 없는 함수)를 정의하는데 사용된다. 람다는 단 하나의 추상 메소드를 가진 인터페이스, 즉 함수형 인터페이스와 함께 사용된다.
 

🍍 람다 표현식의 기본 문법

자바에서 람다식은 [ 매개변수 ] → { 표현식 } 구문을 사용하여 작성된다.
 
notion image
  • 람다식은 0개 이상의 매개 변수를 가질 수 있다.
  • 화살표 는 람다식에서 매개 변수와 몸체를 구분한다.
  • 매개 변수의 형식을 명시적으로 선언할 수 있다.
  • 문맥에서 타입을 추정할 수 있다. 즉, int aa와 동일하게 된다. 빈 괄호는 매개변수가 없다는 뜻이다.
  • 단일 매개 변수이고 타입은 유추가 가능한 경우는 괄호를 사용하지 않을 때도 있다.
    • ex) a → return a*a 와 같이 표현
  • 몸체에 하나 이상의 문장이 있으면 중괄호로 묶는다.
 
 
람다 표현식 예제
notion image
 

🍑 람다식의 활용

람다 표현식은 함수를 변수로 전달하는 수도 있지만, 실제로는 익명 클래스(Anonymous Class)를 대체하는 데에서 가장 널리 사용되며, 특히 함수형 인터페이스 (Functional Interface)의 구현체를 처리할 때 유용하다. 이는 자바에서는 특별한 유형으로 단 하나의 메소드를 가지고 있는 인터페이스를 일컫는다. 그러므로 일반적으로 표현할 때 하나의 메소드를 위해서 구현해야될 코드가 많았으나, 이러한 특성 때문에 람다 표현식과 밀첩하게 연관이 되어있다.
 
 
ActionListener 인터페이스에서의 활용
notion image
  • 위와 같이 람다 표현식이 없었다면 actionPerformed의 기능을 사용하기 위해서 Actionlistener의 이름 없는 객체를 생성하고 오버라이딩을 해야 사용할 수 있었다. 하지만 람다표현식의 등장으로 더 간결하고 직관적인 표현이 가능해졌다.
 
notion image
  • 람다 표현식으로 5줄이 필요했던 식을 두 줄로 요약할 수 있게 되었다.
  • 이 식에서 addActionListener를 호출하면서 이 메소드가 ActionListener타입의 매개변수를 요구하기 때문에, 해당 메소드가 함수형 인터페이스를 구현하는 것이라 파악이 가능하고, 람다식으로 요약이 가능하다.
 
 
Runnable 인터페이스에서의 활용
notion image
  • 해당 예시에서도 마찬가지로 run()메소드를 실행하기 위해서 Runnable 객체가 익명으로 생성이 되었다. 이런 경우에는 람다 표현식으로 요약이 가능하다.
 
notion image
  • 한 줄로 깔끔하게 람다표현식으로 요약이 되었다.
  • 받는 매개변수가 없다면은 ( ) → { 표현식 }으로 요약할 수 있다.
 
 
Iterable 인터페이스에서의 활용
notion image
  • 람다식의 이용하면 배열의 모든 요소를 출력하는 코드에서 ForEach() 와 같은 부분에서 함수형 프로그래밍을 사용할 수 있다.
 
notion image
  • forEach구문에 비해서는 조금 더 직관적으로 표현이 되었다.
Share article

AI_Nomads