IT/Java

[Java] 람다식(Lambda Expressions)

Huitopia 2024. 3. 14. 01:32
728x90

람다식(Lambda Expressions)

어떤 람다식을 매개값으로 제공하느냐에 따라 계산 결과는 다르다.

  • 추상 메소드가 하나인 인터페이스의 익명 클래스의 객체 생성코드를 간단히 표현한다.
  • 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호이다.
  • 메소드를 하나의 식(expression)으로 표현하여 간략하게 표현 가능하다.
  • 메소드의 이름과 반환값이 없어져 익명 함수(Anonymous function)라고도 한다.
  • 람다식 자체만으로 메소드의 역할을 대신 하고, 메소드의 매개변수로 전달도 가능하며, 메소드의 결과로 반환도 가능하다.
  • 람다식으로 메소드를 변수처럼 다루는 것이 가능하다.

 

람다식: (매개변수, ...) -> { 처리 내용 }
  • 매개변수 화살표(->) 함수 몸체로 이용하여 사용한다.
  • 함수 몸체가 단일 실행문이면 중괄호{} 생략이 가능하다.
  • 함수 몸체가 return문으로만 구성되어 있는 경우 중괄호{}를 생략할 수 없다.
  • 람다식 내에서 사용되는 지역 변수는 final이 붙지 않아도 상수로 간주된다.
  • 람다식으로 선언되 변수명은 다른 변수명과 중복될 수 없다.

 

 

함수형 인터페이스(function interface)

  • 구현해야 할 추상 메소드가 하나만 정의된 인터페이스이다.
  • 람다식으로 생성된 순수 함수는 함수형 인터페이스로만 선언 가능하다.

@FunctionalInterface

  • 인터페이스가 함수형 인터페이스임을 보장하기 위해 어노테이션을 붙인다.
  • 컴파일 과정에서 추상 메소드가 하나인지 검사해주며, 붙이는 건 선택 사항이다.

 

예제 코드

package ch16.sec00;

public class Lambda02 {
    public static void main(String[] args) {
        MyInterface02 myInterface02 = (int a, int b) -> {
            System.out.println("Lambda02.");
        };
    }
}

@FunctionalInterface
interface MyInterface02 {
    void method1(int a, int b);
}

 

 

 

728x90