Java 8 - Function 예제

Java 8에서 도입된 Function의 기본적인 사용 방법 및 예제에 대해서 알아보겠습니다.

1. Function

Java 8의 Function은 1개의 인자(Type T)를 받고 1개의 객체(Type R)를 리턴하는 함수형 인터페이스입니다.

public interface Function<T, R> {
    R apply(T t);
}

2. Function의 구현 방법 및 예제

다음 예제는 Function 구현 및 apply()가 어떻게 동작하는지 알려줍니다.

Function 객체는 람다식으로 구현할 수 있습니다. 그리고 apply() 호출과 함께 Integer 객체를 인자를 전달하면 람다식의 구현 내용이 수행되며 결과가 Integer 객체로 리턴됩니다.

import java.util.function.Function;

public class FunctionExample1 {

    public static void main(String[] args) {

        Function<Integer, Integer> func1 = x -> x * x;

        Integer result = func1.apply(10);

        System.out.println(result);
    }
}

Output:

100

3. andThen()으로 다수의 Function 순차적 수행

Function.andThen()은 인자로 Function 객체를 받으며, 다수의 Function들을 순차적으로 실행합니다.

다음 예제는 andThen()이 어떻게 동작하는지 알려줍니다. apply()의 인자는 먼저 func1에 전달되며, func1의 결과가 func2의 인자로 전달됩니다. 그리고 func2의 결과가 리턴됩니다.

import java.util.function.Function;

public class FunctionExample2 {

    public static void main(String[] args) {

        Function<Integer, Integer> func1 = n -> n * n;
        Function<Integer, String> func2 = n -> "result: " + n;

        String result = func1.andThen(func2).apply(10);

        System.out.println(result);
    }
}

Output:

result: 100

4. compose()로 Function 합성

Function.compose()는 인자로 Function을 받으며, 두개의 Function을 합쳐진 하나의 Function 객체를 리턴합니다. 합성되는 두개의 Function은 인자 타입과 리턴 타입이 서로 맞아야 됩니다.

다음 예제는 compose()에 대해서 소개합니다. multiply.compose(add)는 add와 multiply 함수를 합성합니다. addAndMultiply.apply(1)는 1이 add 함수에 인자로 전달되며, 그 결과가 multiply 함수에 전달되며 결과가 리턴됩니다.

import java.util.function.Function;

public class FunctionExample3 {

    public static void main(String[] args) {

        Function<Integer, Double> add = n -> n + 2.0;
        Function<Double, Double> multiply = n -> n * 5.0;
        Function<Integer, Double> addAndMultiply = multiply.compose(add);

        Double result = addAndMultiply.apply(1);

        System.out.println(result);
    }
}

Output:

15.0
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha