[java] 람다 표현식과 함수형 인터페이스

Java 8부터 도입된 람다 표현식은 함수형 프로그래밍의 개념을 Java에 도입한 것입니다. 람다 표현식은 코드의 간결성과 가독성을 높여주며, 함수형 프로그래밍의 장점을 활용할 수 있게 해줍니다.

람다 표현식이란?

람다 표현식은 익명 함수를 간결하게 표현한 것으로, 이름이 없는 메서드입니다. 람다 표현식은 메서드의 시그니처를 따라 간단하게 작성할 수 있으며, 일반적으로 함수형 인터페이스를 통해 사용됩니다.

함수형 인터페이스

함수형 인터페이스는 하나의 추상 메서드를 가지는 인터페이스를 말합니다. 자바에서는 @FunctionalInterface 어노테이션을 사용하여 함수형 인터페이스임을 명시할 수 있습니다. 예를 들어, 다음은 두 개의 정수를 입력받고 정수를 반환하는 함수형 인터페이스의 예입니다.

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

이렇게 정의된 함수형 인터페이스는 람다 표현식을 사용하여 구현체를 생성할 수 있습니다. 다음은 Calculator 인터페이스를 활용한 람다 표현식의 예입니다.

Calculator add = (a, b) -> a + b;
int result = add.calculate(3, 4);
System.out.println(result); // Output: 7

위의 예제에서는 Calculator 인터페이스를 구현하고 있는 람다 표현식을 생성하여 add 변수에 할당하였습니다. 이후 calculate 메서드를 호출하여 결과를 확인할 수 있습니다.

주의 사항

람다 표현식을 사용할 때 주의해야 할 사항이 있습니다.

첫째, 람다 표현식은 함수형 인터페이스를 통해서만 사용할 수 있습니다. 추상 메서드가 하나가 아니거나, @FunctionalInterface 어노테이션이 적용되지 않은 인터페이스에는 람다 표현식을 사용할 수 없습니다.

둘째, 람다 표현식은 익명 함수이므로 외부의 변수를 참조할 때는 해당 변수가 final이거나 사실상 final인 경우에만 참조할 수 있습니다. 따라서, 외부 변수가 변경될 수 있는 경우에는 람다 표현식에서 해당 변수를 사용할 수 없습니다.

결론

람다 표현식과 함수형 인터페이스는 Java의 기능을 확장하여 함수형 프로그래밍의 개념을 도입할 수 있는 강력한 도구입니다. 람다 표현식과 함수형 인터페이스를 적절히 활용하면 코드의 간결성과 가독성을 높일 수 있으며, 함수형 프로그래밍의 장점을 활용할 수 있습니다.