3장. JDK의 기능적 인터페이스
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
많은 함수형 프로그래밍 언어는 인수, 반환 유형 또는 실제 사용 사례에 관계없이 "함수"라는 단일하고 동적인 개념만을 사용하여 Lambda를 설명합니다. 반면에 Java는 Lambda를 포함한 모든 것에 유형이 필요한 엄격한 타입 언어입니다. 그렇기 때문에 JDK는 함수형 도구 집합을 시작하기 위해 java.util.function 패키지에 40개 이상의 즉시 사용 가능한 함수형 인터페이스를 제공하고 있습니다.
이 장에서는 가장 중요한 기능 인터페이스를 보여주고, 다양한 변형이 있는 이유를 설명하며, 코드를 더 기능적으로 확장하는 방법을 보여드립니다.
빅 4 기능적 인터페이스 카테고리
java.util.function 의 40개 이상의 기능 인터페이스는 크게 네 가지 범주로 나뉘며, 각 범주는 필수적인 기능 사용 사례를 나타냅니다:
-
함수는 인수를 받아 결과를 반환합니다.
-
소비자는 인수를 수락할 뿐 결과를 반환하지 않습니다.
-
공급업체는 인수를 수락하지 않고 결과만 반환합니다.
-
술어는 표현식에 대해 테스트할 인수를 받고 그 결과로
boolean프리미티브를 반환합니다.
이 네 가지 범주는 다양한 사용 사례를 포괄하며, 그 이름은 기능적 인터페이스 유형 및 그 변형과 관련이 있습니다.
기능 인터페이스의 네 가지 주요 카테고리를 살펴보겠습니다.
기능
해당 java.util.function.Function<T, R> 인터페이스가 있는 함수는 가장 핵심적인 기능 인터페이스 중 하나입니다. 그림 3-1에서 볼 수 있듯이 단일 입력과 출력을 가진 "고전적인" 함수를 나타냅니다.
그림 3-1. java.util.function.Function<T, R>
Function<T, R> 의 단일 추상 메서드는 apply 이라고 하며 T 타입의 인수를 받아 R 타입의 결과를 생성합니다:
@FunctionalInterfacepublicinterfaceFunction<T,R>{Rapply(Tt);}
다음 코드는 String 을 Integer 로 확인하고 길이를 변환하는 방법을 null 보여줍니다:
Function<String,Integer>stringLength=str->str!=null?str.length():0;Integerresult=stringLength.apply("Hello, Function!");
입력 유형 T 과 출력 유형 R 은 동일할 수 있습니다. 그러나 "Function Arity "에서는 동일한 유형을 가진 특수한 기능 인터페이스 변형에 대해 설명합니다.
소비자
이름에서 알 수 있듯이, 그림 3-2와 같이 소비자는 입력 매개변수만 ...