Interface CheckedTripleFunction<T1,T2,T3,R>
-
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface CheckedTripleFunction<T1,T2,T3,R>
Variant ofTripleFunctionthat behaves likeTripleFunction, but which allows checkedException's to be thrown from itsapply(Object, Object, Object)method
– the first function argument type – the second function argument type – the third function argument type – the function result type
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description Rapply(T1 arg1, T2 arg2, T3 arg3)This method performs the operation that may fail with a CheckedExceptionstatic <T1,T2,T3,R>
TripleFunction<T1,T2,T3,R>safe(CheckedTripleFunction<T1,T2,T3,R> functionThatCanFailWithACheckedException)Wraps aCheckedTripleFunction(basically a lambda with three arguments that returns a result and which throws a CheckedException) by returning a newTripleFunctioninstance
The returnedTripleFunction.apply(Object, Object, Object)method delegates directly to theapply(Object, Object, Object)and catches any thrown checkedException's and rethrows them as aCheckedExceptionRethrownException
Unless you provide a context-message (usingsafe(String, CheckedTripleFunction)then any caught checkedException's message also becomes theCheckedExceptionRethrownException's message.
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown.
Usage example:
Let's say we have a method calledsomeOperationthat cannot change, but which accepts aTripleFunctionwith the purpose of the calling theTripleFunction.apply(Object, Object, Object).static <T1,T2,T3,R>
TripleFunction<T1,T2,T3,R>safe(String contextMessage, CheckedTripleFunction<T1,T2,T3,R> functionThatCanFailWithACheckedException)Wraps aCheckedTripleFunction(basically a lambda with three arguments that returns a result and which throws a CheckedException) by returning a newTripleFunctioninstance
The returnedTripleFunction.apply(Object, Object, Object)method delegates directly to theapply(Object, Object, Object)and catches any thrown checkedException's and rethrows them as aCheckedExceptionRethrownException
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown.
Usage example:
Let's say we have a method calledsomeOperationthat cannot change, but which accepts aTripleFunctionwith the purpose of the calling theTripleFunction.apply(Object, Object, Object).
-
-
-
Method Detail
-
safe
static <T1,T2,T3,R> TripleFunction<T1,T2,T3,R> safe(CheckedTripleFunction<T1,T2,T3,R> functionThatCanFailWithACheckedException)
Wraps aCheckedTripleFunction(basically a lambda with three arguments that returns a result and which throws a CheckedException) by returning a newTripleFunctioninstance
The returnedTripleFunction.apply(Object, Object, Object)method delegates directly to theapply(Object, Object, Object)and catches any thrown checkedException's and rethrows them as aCheckedExceptionRethrownException
Unless you provide a context-message (usingsafe(String, CheckedTripleFunction)then any caught checkedException's message also becomes theCheckedExceptionRethrownException's message.
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown.
Usage example:
Let's say we have a method calledsomeOperationthat cannot change, but which accepts aTripleFunctionwith the purpose of the calling theTripleFunction.apply(Object, Object, Object).
The problem willpublic void someOperation(Function<Integer, BigDecimal, Boolean, String> operation) { // ... Logic ... String value = operation.apply(10, BigDecimal.ONE, true); // ... More logic --- }TripleFunction.apply(Object, Object, Object)occurs whenTripleFunctioncalls any API that throws a checkedException, e.g. theFileAPI.
SinceTripleFunction.apply(Object, Object, Object)doesn't define that it throws anyException's we're forced to add a try/catch to handle theIOExceptionfor the code to compile:someOperation((value, amount, enabled) -> { try { // Logic that uses the File API return "some-value"; } catch (IOException e) { throw new RuntimeException(e); } }));
This is where theCheckedTripleFunctioncomes to the aid as itsapply(Object, Object, Object)methods defines that it throws a CheckedExceptionand itssafe(CheckedTripleFunction)will return a newTripleFunctioninstance with aTripleFunction.apply(Object, Object, Object)method that ensures that theapply(Object, Object, Object)method is called and any checkedException's thrown will be caught and rethrown as aCheckedExceptionRethrownException:someOperation(CheckedFunction.safe((value, amount, enabled) -> { // Logic that uses the File API that throws IOException return "some-value"; }));- Type Parameters:
T1- the first argument typeT2- the second argument typeT3- the third argument typeR- the return type- Parameters:
functionThatCanFailWithACheckedException- theCheckedTripleFunctioninstance that will be wrapped as aTripleFunction- Returns:
- a
TripleFunctionwith aTripleFunction.apply(Object, Object, Object)method that ensures that theapply(Object, Object, Object)method is called whenTripleFunction.apply(Object, Object, Object)and any checkedException's thrown will be caught and rethrown as aCheckedExceptionRethrownException.
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown. - Throws:
CheckedExceptionRethrownException- in case theapply(Object, Object, Object)method throws a checkedException
-
safe
static <T1,T2,T3,R> TripleFunction<T1,T2,T3,R> safe(String contextMessage, CheckedTripleFunction<T1,T2,T3,R> functionThatCanFailWithACheckedException)
Wraps aCheckedTripleFunction(basically a lambda with three arguments that returns a result and which throws a CheckedException) by returning a newTripleFunctioninstance
The returnedTripleFunction.apply(Object, Object, Object)method delegates directly to theapply(Object, Object, Object)and catches any thrown checkedException's and rethrows them as aCheckedExceptionRethrownException
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown.
Usage example:
Let's say we have a method calledsomeOperationthat cannot change, but which accepts aTripleFunctionwith the purpose of the calling theTripleFunction.apply(Object, Object, Object).
The problem willpublic void someOperation(Function<Integer, BigDecimal, Boolean, String> operation) { // ... Logic ... String value = operation.apply(10, BigDecimal.ONE, true); // ... More logic --- }TripleFunction.apply(Object, Object, Object)occurs whenTripleFunctioncalls any API that throws a checkedException, e.g. theFileAPI.
SinceTripleFunction.apply(Object, Object, Object)doesn't define that it throws anyException's we're forced to add a try/catch to handle theIOExceptionfor the code to compile:someOperation((value, amount, enabled) -> { try { // Logic that uses the File API return "some-value"; } catch (IOException e) { throw new RuntimeException(e); } }));
This is where theCheckedTripleFunctioncomes to the aid as itsapply(Object, Object, Object)methods defines that it throws a CheckedExceptionand itssafe(CheckedTripleFunction)will return a newTripleFunctioninstance with aTripleFunction.apply(Object, Object, Object)method that ensures that theapply(Object, Object, Object)method is called and any checkedException's thrown will be caught and rethrown as aCheckedExceptionRethrownException:someOperation(CheckedFunction.safe(msg("Processing file {}", fileName), (value, amount, enabled) -> { // Logic that uses the File API that throws IOException return "some-value"; }));- Type Parameters:
T1- the first argument typeT2- the second argument typeT3- the third argument typeR- the return type- Parameters:
contextMessage- a string that the described the content for theCheckedTripleFunctionand which will be used as message in anyCheckedExceptionRethrownExceptionthrownfunctionThatCanFailWithACheckedException- theCheckedTripleFunctioninstance that will be wrapped as aTripleFunction- Returns:
- a
TripleFunctionwith aTripleFunction.apply(Object, Object, Object)method that ensures that theapply(Object, Object, Object)method is called whenTripleFunction.apply(Object, Object, Object)and any checkedException's thrown will be caught and rethrown as aCheckedExceptionRethrownException.
AnyRuntimeException's thrown aren't caught and the calling code will receive the originalRuntimeExceptionthrown. - Throws:
CheckedExceptionRethrownException- in case theapply(Object, Object, Object)method throws a checkedException
-
apply
R apply(T1 arg1, T2 arg2, T3 arg3) throws Exception
This method performs the operation that may fail with a CheckedException- Parameters:
arg1- the first function argumentarg2- the second function argumentarg3- the third function argument- Returns:
- the result of performing the function
- Throws:
Exception- this method can throw both checkedException's as well asRuntimeException's
-
-