Java Functional Interfaces
Java의 기능 인터페이스를 빠르게 분석하고 싶습니까? 여기에는 술어, 연산자 및 함수뿐만 아니라 그 사용법을 잘 요약 해 놓았습니다.
java.util.function에서 43 개의 기능 인터페이스의 알파벳 순 목록을 보면 약간 압도적입니다. 그들 모두를 배우고 기억하려고 노력하는 것은 도전이 될 것입니다!
다행스럽게도 조슈아 블로흐 (Joshua Bloch)는 Effective Java의 제 3 판에서 구조를 구했습니다.
항목 44 : 표준 기능 인터페이스의 사용을 선호합니다.
나는 이것을 정말로 읽는 것이 좋습니다!
블로흐 (Bloch) 교수가 설명하는 경우를 제외하고는 직접 작성해야 할 것 같지 않습니다.
- 설명이 많은 이름이 도움이 될 수 있습니다.
- 그것과 관련된 강한 계약이있다.
- 사용자 정의 기본 메소드의 이점
내 목표는 쉬운 참조 (또는 다음 인터뷰)를 위해 자신의 작업을 기반으로 치트 시트를 만드는 것입니다.
기억하십시오 (43 가지 기능 인터페이스 중 39 가지를 다룹니다)
조건부, 단항 연산자, BinaryOperator, 함수, 공급자 및 소비자는 참조 형식을 사용합니다. 각각에는 double, int 또는 long 각각에 대해 작동하는 3 개의 변형이 있습니다.
BiPredicate, BiFunction, BiConsumer는 인수로 두 개의 참조 유형을 허용합니다.
함수에는 프리미티브를 받아 들여 다른 프리미티브를 반환 할 수있는 여섯 가지 변형이 있으며 참조 유형을 받아들이고 프리미티브를 반환하는 여섯 개 (BiFunction 포함)
개요
기본적으로 술어, 단항 연산자, 함수, 공급자, 소비자 및 두 가지 참조 유형에서 작동하는 단일 참조 유형에서 작동하는 다섯 가지 기본 기능 인터페이스가 있습니다. - BinaryOperator
여섯 가지 기본 유형에는 각각 기본, 즉 double, int 또는 long을 허용하는 세 가지 변형이 있습니다.
세 가지 기본 유형의 변형은 두 가지 인수를 허용합니다. BiPredicate, BiFunction, BiConsumer
함수에는 프리미티브 중 하나 (double, int, long) 중 하나를 다른 프리미티브로 변환하는 6 가지 변형이 있습니다.
함수 및 BiFunction에는 각각 참조 유형을 사용하고 기본 double, int 또는 long을 반환하는 3 개의 변형이 있습니다.
공급 업체에는 부울을 반환하는 변형이 있습니다.
BiConsumer에는 참조 유형과 프리미티브 (double, int 또는 long)를 허용하는 세 가지 변형이 있습니다.
기본 유형 (Basic Types)
PREDICATE | 하나 또는 두 개의 인수를 취하고 부울을 반환합니다 (5 개 변형) |
UNARY OPERATOR | 결과 및 단일 인수 유형이 동일합니다 (4 변형) |
BINARY OPERATOR | 결과 및 두 인수 유형이 동일합니다 (4 변형). |
FUNCTION | 결과와 하나 또는 두 개의 인수 유형이 다릅니다 (17 개 변형) |
SUPPLIER | 인수를 취하지 않고 값을 반환합니다 (5 변형). |
CONSUMER | 하나 또는 두 개의 인수를 취하고 값을 반환하지 않습니다 (8 개 변형). |
표기법(Notation)
인터페이스가 기본 인수를 허용하는 경우 접두어 Double, Int, Long (예 : DoubleConsumer) |
인터페이스가 프리미티브 결과를 생성하는 경우 : 접두사 ToDouble, ToInt, ToLong, 예 : ToDoubleFunction |
인터페이스가 프리미티브를 받아들이고 생성하는 경우 : 접두어 결합 예 : IntToDoubleFunction |
객체 유형 및 프리미티브를 허용하는 BiConsumer 변형은 Obj + 프리미티브 (예 : ObjDoubleConsumer)를 접두사로 사용합니다. |
패키지 요약
https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
술부 (Predicate)
Predicate<T> | 하나의 인수 (참조 유형)의 술어 (부울 값 함수)를 나타냅니다. |
DoublePredicate | 하나의 이중 값 인수를 허용합니다. |
IntPredicate | 하나의 int 값을 갖는 인수를받습니다. |
LongPredicate | 길이가 긴 인수 하나를 허용합니다. |
BiPredicate <T, U> | 2 개의 인수 (참조 형)를 받아들입니다. |
단항 연산자(Unary Operator)
UnaryOperator <T> | 피연산자 (참조 유형)와 동일한 유형의 결과를 생성하는 단일 피연산자에 대한 연산을 나타냅니다. |
DoubleUnaryOperator | 단일 double 값 피연산자를 받아들이고 double 값 결과를 생성합니다. |
IntUnaryOperator | 단일 int 값 피연산자를 받아들이고 int 값 결과를 생성합니다. |
LongUnaryOperator | 하나의 long 값 피연산자를 받아들이고 long 값 결과를 생성합니다. |
이진 연산자(Binary Operator)
BinaryOperator <T> | 동일한 유형의 두 피연산자에 대한 연산을 나타내며 피연산자와 동일한 유형의 결과를 생성합니다 (참조 유형) |
DoubleBinaryOperator | 두 개의 double 값 피연산자를 받아들이고 double 값 결과를 생성합니다. |
IntBinaryOperator | 2 개의 int 값 피연산자를 받아들이고 int 값 결과를 생성합니다. |
LongBinaryOperator | 두 개의 long 값 피연산자를 받아들이고 long 값 결과를 생성합니다. |
기능(Function)
함수 <T, R> | 하나의 인수를 받아들이고 결과 (참조 형식)를 생성하는 함수를 나타냅니다. |
DoubleFunction <R> | double 값의 인수를 받아들이고 결과를 생성합니다. |
IntFunction <R> | int 값의 인수를 받아들이고 결과를 생성합니다. |
LongFunction <R> | long 값의 인수를 받아들이고 결과를 생성합니다. |
DoubleToIntFunction | double 값의 인수를 받아들이고 int 값의 결과를 생성합니다. |
DoubleToLongFunction | double 값의 인수를 받아들이고 long 값의 결과를 생성합니다. |
IntToDoubleFunction | int 값의 인수를 받아들이고 double 값을 반환합니다. |
IntToLongFunction | int 값의 인수를 받아들이고 long 값의 결과를 생성합니다. |
LongToIntFunction | long 값의 인수를 받아들이고 int 값의 결과를 생성합니다. |
LongToDoubleFunction | long 값의 인수를 받아들이고 double 값을 반환합니다. |
ToDoubleFunction <T> | 참조 유형을 허용하고 int 값의 결과를 생성합니다. |
ToIntFunction <T> | 참조 유형을 허용하고 int 값의 결과를 생성합니다. |
ToLongFunction <T> | 참조 유형을 허용하고 긴 값의 결과를 생성합니다. |
BiFunction <T, U, R> | 두 개의 인수를 받아들이고 결과 (참조 형식)를 생성하는 함수를 나타냅니다. |
ToDoubleBiFunction <T, U> | 두 개의 참조 유형 인수를 허용하고 이중 값 결과를 생성합니다. |
ToIntBiFunction <T, U> | 두 개의 참조 형식 인수를 받아들이고 int 값의 결과를 생성합니다. |
ToLongBiFunction <T, U> | 두 개의 참조 형식 인수를 받아들이고 long 값의 결과를 생성합니다. |
공급자(Supplier)
Supplier <T> | 결과 공급자 (reference type) |
DoubleSupplier | 이중 값 결과의 공급자 |
IntSupplier | int 값 결과의 공급자 |
LongSupplier | 장기간의 결과를 제공하는 업체 |
부울 공급 업체 | 부울 값 결과 공급자 |
소비자(Consumer)
Consumer <T> | 단일 (참조 형식) 입력 인수를 받아들이고 결과를 반환하지 않는 연산을 나타냅니다. |
DoubleConsumer | 단일 값 인수 하나를 허용하고 결과를 반환하지 않습니다. |
IntConsumer | int 값의 단일 인수를 받아들이고 결과를 반환하지 않습니다. |
LongConsumer | 하나의 long 값의 인수를 받아들이고 결과를 반환하지 않습니다. |
BiConsumer <T, U> | 두 개의 (참조 형식) 입력 인수를 받아들이고 결과를 반환하지 않는 연산을 나타냅니다. |
ObjDoubleConsumer <T> | 객체 값 및 이중 값 인수를 허용하고 결과를 반환하지 않습니다. |
ObjIntConsumer <T> | 객체 값 및 int 값의 인수를 받아들이고 결과를 반환하지 않습니다. |
ObjLongConsumer <T> | 객체 값 및 long 값의 인수를 받아들이고 결과를 반환하지 않습니다. |