Java / / 2023. 2. 1. 11:13

함수형 인터페이스 - java.util.function 패키지

반응형

 

 

해당 포스팅은 자바의 정석 인터넷 강의를 참고하여 작성한 글입니다.

필요하시다면 강의를 추가로 참고하셔도 될 것 같습니다 : )

 

💡 java.util.function 패키지

  • 자주 사용되는 함수형 인터페이스를 제공한다.
  • 이미 만들어진 것을 공통으로 사용하게 되면 표준화가 되는 장점이 있다. (이해하기 쉽고, 편리하다)

 

✔ 함수형 인터페이스

  • Functional Interface라고 하며, 메서드를 하나만 가지는 인터페이스를 뜻한다.

함수형 인터페이스가 궁금하다면 아래의 글을 참고.

 

[Java] 람다식과 작성 방법 - 함수형 인터페이스 사용 (매개변수, 반환타입)

자바는의 큰 변화 JDK 1.5 - 지네릭스(generics) JDK 1.8 - 람다(lambda) : 자바는 객체지향언어 + 함수형 언어 람다식이란? 메서드를 하나의 식(expression)으로 표현한 것이다. 함수를 간략하면서도 명확한

jjunn93.com

 

다시 본론으로 들어가면, 

JDK 1.8 - java.util.function 패키지 : 수 많은 함수형 인터페이스들이 정의되어 있다.

아래는 java.util.function 패키지의 대표적인 함수형 인터페이스이다.

자바의정석

 

✔ 함수형 인터페이스(java.util.function 패키지) 사용법

Supplier<Integer> f = () -> (int)(Math.random() * 100) + 1; //입력 x -> 반환 o
Comsumer<Integer> f = i -> System.out.print(i + ", ");      //입력 o -> 반환 x
Predicate<Integer> f = i -> i % 2 == 0;                     //입력 o -> 반환 boolean
Function<Integer, Integer> f = i -> i / 10 * 10;            //입력 o -> 반환 o
  • 참고로 Predicate<Integer, Boolean>이라고 사용해야 하지만, 반환타입이 항상 Boolean이기 때문에 Boolean은 생략

 

✔ Predicat<T> 함수형 인터페이스를 아래에서 간단히 알아보자.

Predicate<String> isEmptyStr = s -> s.length() == 0; //람다식의 반환 type boolean
String s = "";

if(isEmptyStr.test(s))	// if(s.length() == 0) //test는 람다식 메서드 이름
	System.out.println("This is an empty String.");

💡 매개변수가 2개인 함수형 인터페이스

자바의정석

  • BiSupplier : 함수는 반환 값이 0개 또는 1개 이어야 하는데, 2개이기 때문에 함수형 인터페이스에 존재하지 않는다.

 

매개변수 3개 이상을 가진 함수형 인터페이스 사용법 - 직접 생성 필요

  • 잘 사용하지 않지만, 만약에 필요하다면 직접 만들어서 사용하면 된다.
@FunctionalInterface
interface TriFunction<T, U, V, R> {
	R apply(T t, U u, V v);
}

💡 함수형 인터페이스 - 매개변수의 타입과 반환 타입 일치

자바의정석

  • 매개변수의 타입 = 반환타입 (항등함수)
  • 따라서, 타입<T>을 하나만 써주면 된다.
    • T : 입렵 타입
    • R : 출력 타입 - 여기서는 출력 타입이 T

 

✔ UnaryOperator<T> 함수형 인터페이스를 아래에서 간단히 알아보자.

@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
	static <T> UnaryOperator<T> ientity() {
    	return t -> t; //항등 함수
    }
}
  • UnaryOperator는 Function은 자손이다

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유