[java] 제네릭을 사용한 함수형 인터페이스의 구현

함수형 프로그래밍은 메서드를 인자로 전달하거나 메서드를 반환하는 고급 기능을 제공합니다. Java에서는 이를 지원하기 위해 함수형 인터페이스를 도입했습니다. 이번에는 Java에서 함수형인터페이스를 제네릭으로 구현하는 방법에 대해 알아보겠습니다.

1. 함수형 인터페이스란?

Java 8에서 @FunctionalInterface 주석을 사용하여 함수형 인터페이스를 정의할 수 있습니다. 이러한 인터페이스는 하나의 추상 메서드를 가지며, 함수형 인터페이스를 사용해 해당 메서드의 몸체를 람다식으로 제공할 수 있습니다.

2. 제네릭 함수형 인터페이스의 구현

제네릭 함수형 인터페이스를 구현하는 방법은 간단합니다. 먼저, 함수형 인터페이스를 정의합니다. 다음으로, 제네릭 타입을 인터페이스에 적용합니다.

예를 들어, 아래와 같이 Converter라는 함수형 인터페이스를 제네릭으로 정의할 수 있습니다.

@FunctionalInterface
interface Converter<T, U> {
    U convert(T from);
}

위 예제에서 Converter 인터페이스는 제네릭 타입 TU를 사용하여 구현됩니다. 이제 해당 인터페이스를 사용하여 제네릭 함수를 생성할 수 있습니다.

아래의 예제는 Converter 인터페이스의 구현 예시입니다.

public class Main {
    public static void main(String[] args) {
        Converter<String, Integer> converter = (from) -> Integer.valueOf(from);
        Integer converted = converter.convert("123");
        System.out.println(converted);    // 123
    }
}

위 예시에서는 String을 Integer로 변환하는 제네릭 함수를 정의하고, 람다식을 사용하여 해당 함수를 구현합니다.

3. 마치며

제네릭을 사용하여 함수형 인터페이스를 구현하는 방법을 알아보았습니다. 제네릭을 활용하면 보다 유연한 함수형 프로그래밍이 가능해집니다. Java의 제네릭과 함수형 인터페이스를 활용하여 프로그래밍을 할 때, 이러한 유연성을 고려해보시기 바랍니다.

참고문헌 : Oracle Java 문서