반응형
해당 포스팅은 자바의 정석 인터넷 강의를 참고하여 작성한 글입니다.
필요하시다면 강의를 추가로 참고하셔도 될 것 같습니다 : )
💡 java.util.function 패키지
- 자주 사용되는 함수형 인터페이스를 제공한다.
- 이미 만들어진 것을 공통으로 사용하게 되면 표준화가 되는 장점이 있다. (이해하기 쉽고, 편리하다)
✔ 함수형 인터페이스
- Functional Interface라고 하며, 메서드를 하나만 가지는 인터페이스를 뜻한다.
함수형 인터페이스가 궁금하다면 아래의 글을 참고.
다시 본론으로 들어가면,
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은 자손이다
반응형
'Java' 카테고리의 다른 글
메서드 참조(method reference) - 람다식을 더 간단하게 (0) | 2023.02.02 |
---|---|
Predicate 결합 방법 / 컬렉션과 함수형 인터페이스 사용 (0) | 2023.02.01 |
[Java] 람다식과 작성 방법 - 함수형 인터페이스 사용 (매개변수, 반환타입) (0) | 2023.01.31 |
QuerydslPredicateExecutor - querydsl 조건 조회 간단히 사용하기 (0) | 2023.01.18 |
Querydsl 페이징 연동 및 최적화 - Querydsl fetchResults() , fetchCount() Deprecated(향후 미지원) (0) | 2023.01.18 |