Functional Interface
란 Java8부터 도입된 람다식을 이용한 함수형 프로그래밍을 가능하게 하는 인터페이스이다.
- Consumer
- 파라미터를 받아서 아무런 값을 반환하지 않는 Functional Interface이다.
- 파라미터의 타입을 T로 받아 유동적으로 사용가능하다.
- Interface
1 2 3 4
@FunctionalInterface public interface Consumer<T> { void accept(T t); }
- 사용예시
1 2 3 4
//List를 foreach로 출력할 때 사용할 수 있다. Consumer<String> consumer = s -> System.out.println(s); List<String> list = Arrays.asList("A", "B", "C"); list.forEach(consumer);
- Supplier
- 아무 파라미터를 받지 않고 응답값만 반환하는 Functional Interface이다.
- 반환 할 응답값의 타입을 T로 지정한다.
- Interface
1 2 3 4
@FunctionalInterface public interface Supplier<T> { T get(); }
- 사용예시
1 2 3
Supplier<String> supplier = () -> "hello world"; String result = supplier.get(); System.out.println(result);
- Fucntion
- 파라미터를 받아서 응답값을 반환하는 Functional Interface이다.
- 파라미터 타입을 T로, 반환 할 응답값의 타입을 R로 지정한다.
- Interface
1 2 3 4
@FunctionalInterface public interface Function<T, R> { R apply(T t); }
- 사용예시
1 2 3 4
//문자열을 숫자로 변환하는 등의 작업에 사용할 수 있다. Function<String, Integer> function = s -> Integer.parseInt(s); int result = function.apply("100"); System.out.println(result);
- Predicate
- 파라미터를 받아서 응답값을 Boolean으로 반환하는 Functional Interface이다.
- 파라미터 타입을 T로 지정한다.
- Interface
1 2 3 4
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }
- 사용예시
1 2 3 4
//필터링 등에 사용할 수 있다. Predicate<Integer> predicate = i -> i > 10; boolean result = predicate.test(5); System.out.println(result);
- UnaryOperator
- 파라미터와 응답값의 타입이 모두 T인 Functional Interface이다.
- Interface
1 2 3 4 5 6
@FunctionalInterface public interface UnaryOperator<T> extends Function<T, T> { static <T> UnaryOperator<T> identity() { return t -> t; } }
- 사용예시
1 2 3 4
//값을 변환하는 등의 작업에 사용할 수 있습니다. UnaryOperator<Integer> operator = i -> i * 2; int result = operator.apply(10); System.out.println(result);