개발/Java

Java에서의 함수형 인터페이스와 람다식

ju_ni_ 2023. 7. 19. 15:12
반응형

자바에서는 함수형 프로그래밍 패러다임을 지원하기 위해 람다식과 함수형 인터페이스를 도입하였습니다. 이번 포스팅에서는 이 두 개념이 무엇인지, 그리고 어떻게 활용할 수 있는지에 대해 알아보겠습니다.

 

 

함수형 인터페이스란?

 

함수형 인터페이스는 추상 메소드를 하나만 가지고 있는 인터페이스를 가리킵니다. 이 때 '@FunctionalInterface'를 인터페이스 위에 작성하여 단 하나의 추상 메소드만 선언할 수 있도록 제한할 수 있습니다.

 

예시코드:

 

@FunctionalInterface
interface MyInterface {
    void print(String message);
}

 

위의 예시코드에서 MyInterface'@FunctionalInterface' 애노테이션을 가지고 있으며, print라는 하나의 추상 메소드만을 가지고 있습니다.

 

 

람다식이란?

 

람다식은 이름이 없는 메소드로서 변수처럼 사용이 가능하며, 매개변수로 전달이 가능합니다. 람다식은 익명 메소드(Anonymous Method)라고도 부르며, 함수형 인터페이스를 이용해 간단하게 구현할 수 있습니다.

 

람다식 문법:

 

(매개변수 형식 나열, ...) -> 리턴값;
(매개변수 형식 나열, ...) -> {2개 이상의 문장 작성; return 리턴값;}

 

예시코드:

 

MyInterface myLambda = (message) -> System.out.println("메시지 출력: " + message);
myLambda.print("안녕하세요!");

 

이 예시코드에서는 MyInterface를 람다식으로 구현하고 있습니다. 출력문 "메시지 출력: 안녕하세요!"를 출력합니다.

 

 

람다식과 함수형 인터페이스 활용 예시

 

람다식은 매우 간결한 코드로 함수형 인터페이스를 구현할 수 있게 해주므로, 콜백 메소드나 이벤트 핸들러 등을 작성할 때 특히 유용하게 활용됩니다.

 

예시코드:

 

@FunctionalInterface
interface Calculator {
    int operation(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        Calculator add = (a, b) -> a + b;
        System.out.println("덧셈 결과: " + add.operation(10, 5));
        
        Calculator multiply = (a, b) -> a * b;
        System.out.println("곱셈 결과: " + multiply.operation(10, 5));
    }
}

 

예시코드 출력 결과:

 

덧셈 결과: 15
곱셈 결과: 50

 

이 코드는 두 가지 연산(덧셈, 곱셈)을 수행하는 람다식을 사용합니다.

 

  • Calculator라는 함수형 인터페이스를 선언하고, 이를 구현하는 람다식 add와 multiply를 정의했습니다.
  • add는 두 정수를 더하고, multiply는 두 정수를 곱합니다.
  • operation 메소드를 호출하여 연산을 수행하고 결과를 출력합니다. add.operation(10, 5)는 10과 5의 합인 15를, multiply.operation(10, 5)는 10과 5의 곱인 50을 출력합니다.

이처럼, 람다식을 활용하면 코드를 간결하게 작성하면서도 유연성을 확보할 수 있습니다.

 

 

람다식의 장점

 

  • 간결한 코드: 함수형 인터페이스를 람다식으로 구현하면 매우 간결한 코드를 작성할 수 있습니다. 이로 인해 가독성이 향상되며, 코드 유지보수도 쉬워집니다.
  • 유연성: 람다식을 이용하면, 메소드를 변수처럼 취급하거나 매개변수로 전달할 수 있습니다. 이로 인해 코드의 유연성이 향상됩니다.

 

이처럼 함수형 인터페이스와 람다식은 자바에서 함수형 프로그래밍을 지원하는 강력한 도구입니다. 이를 이해하고 잘 활용하면 코드를 간결하고 유연하게 작성할 수 있습니다.

 

반응형