public class Functions extends Object
java.util.function package, or more generally, with Java 8
lambdas.
More specifically, it attempts to address the fact that lambdas are supposed
not to throw Exceptions, at least not checked Exceptions, aka instances of
Exception. This enforces the use of constructs like
Consumer<java.lang.reflect.Method> consumer = (m) -> {
try {
m.invoke(o, args);
} catch (Throwable t) {
throw Functions.rethrow(t);
}
};
By replacing a Consumer<O> with a
FailableConsumer<O,? extends Throwable>, this can be
written like follows:
Functions.accept((m) -> m.invoke(o,args));Obviously, the second version is much more concise and the spirit of Lambda expressions is met better than the second version.
| Modifier and Type | Class and Description |
|---|---|
static interface |
Functions.FailableBiConsumer<O1,O2,T extends Throwable> |
static interface |
Functions.FailableBiFunction<I1,I2,O,T extends Throwable> |
static interface |
Functions.FailableBiPredicate<O1,O2,T extends Throwable> |
static interface |
Functions.FailableCallable<O,T extends Throwable> |
static interface |
Functions.FailableConsumer<O,T extends Throwable> |
static interface |
Functions.FailableFunction<I,O,T extends Throwable> |
static interface |
Functions.FailablePredicate<O,T extends Throwable> |
static interface |
Functions.FailableRunnable<T extends Throwable> |
static interface |
Functions.FailableSupplier<O,T extends Throwable> |
| Constructor and Description |
|---|
Functions() |
| Modifier and Type | Method and Description |
|---|---|
static <O1,O2,T extends Throwable> |
accept(Functions.FailableBiConsumer<O1,O2,T> pConsumer,
O1 pObject1,
O2 pObject2)
Consumes a consumer and rethrows any exception as a
RuntimeException. |
static <O,T extends Throwable> |
accept(Functions.FailableConsumer<O,T> pConsumer,
O pObject)
Consumes a consumer and rethrows any exception as a
RuntimeException. |
static <I1,I2,O,T extends Throwable> |
apply(Functions.FailableBiFunction<I1,I2,O,T> pFunction,
I1 pInput1,
I2 pInput2)
Applies a function and rethrows any exception as a
RuntimeException. |
static <I,O,T extends Throwable> |
apply(Functions.FailableFunction<I,O,T> pFunction,
I pInput)
Applies a function and rethrows any exception as a
RuntimeException. |
static <I1,I2> BiConsumer<I1,I2> |
asBiConsumer(Functions.FailableBiConsumer<I1,I2,?> pConsumer)
Converts the given
Functions.FailableBiConsumer into a standard BiConsumer. |
static <I1,I2,O> BiFunction<I1,I2,O> |
asBiFunction(Functions.FailableBiFunction<I1,I2,O,?> pFunction)
Converts the given
Functions.FailableBiFunction into a standard BiFunction. |
static <I1,I2> BiPredicate<I1,I2> |
asBiPredicate(Functions.FailableBiPredicate<I1,I2,?> pPredicate)
Converts the given
Functions.FailableBiPredicate into a standard BiPredicate. |
static <O> Callable<O> |
asCallable(Functions.FailableCallable<O,?> pCallable)
Converts the given
Functions.FailableCallable into a standard Callable. |
static <I> Consumer<I> |
asConsumer(Functions.FailableConsumer<I,?> pConsumer)
Converts the given
Functions.FailableConsumer into a standard Consumer. |
static <I,O> Function<I,O> |
asFunction(Functions.FailableFunction<I,O,?> pFunction)
Converts the given
Functions.FailableFunction into a standard Function. |
static <I> Predicate<I> |
asPredicate(Functions.FailablePredicate<I,?> pPredicate)
Converts the given
Functions.FailablePredicate into a standard Predicate. |
static Runnable |
asRunnable(Functions.FailableRunnable<?> pRunnable)
Converts the given
Functions.FailableRunnable into a standard Runnable. |
static <O> Supplier<O> |
asSupplier(Functions.FailableSupplier<O,?> pSupplier)
Converts the given
Functions.FailableSupplier into a standard Supplier. |
static <O,T extends Throwable> |
call(Functions.FailableCallable<O,T> pCallable)
Calls a callable and rethrows any exception as a
RuntimeException. |
static <O,T extends Throwable> |
get(Functions.FailableSupplier<O,T> pSupplier)
Invokes the supplier, and returns the result.
|
static RuntimeException |
rethrow(Throwable pThrowable)
Rethrows a
Throwable as an unchecked exception. |
static <T extends Throwable> |
run(Functions.FailableRunnable<T> pRunnable)
Runs a runnable and rethrows any exception as a
RuntimeException. |
static <O1,O2,T extends Throwable> |
test(Functions.FailableBiPredicate<O1,O2,T> pPredicate,
O1 pObject1,
O2 pObject2)
Tests a predicate and rethrows any exception as a
RuntimeException. |
static <O,T extends Throwable> |
test(Functions.FailablePredicate<O,T> pPredicate,
O pObject)
Tests a predicate and rethrows any exception as a
RuntimeException. |
static void |
tryWithResources(Functions.FailableRunnable<? extends Throwable> pAction,
Functions.FailableConsumer<Throwable,? extends Throwable> pErrorHandler,
Functions.FailableRunnable<? extends Throwable>... pResources)
A simple try-with-resources implementation, that can be used, if your
objects do not implement the
AutoCloseable interface. |
static void |
tryWithResources(Functions.FailableRunnable<? extends Throwable> pAction,
Functions.FailableRunnable<? extends Throwable>... pResources)
A simple try-with-resources implementation, that can be used, if your
objects do not implement the
AutoCloseable interface. |
public static Runnable asRunnable(Functions.FailableRunnable<?> pRunnable)
Functions.FailableRunnable into a standard Runnable.pRunnable - a FailableRunnableRunnablepublic static <I> Consumer<I> asConsumer(Functions.FailableConsumer<I,?> pConsumer)
Functions.FailableConsumer into a standard Consumer.I - the type used by the consumerspConsumer - a FailableConsumerConsumerpublic static <O> Callable<O> asCallable(Functions.FailableCallable<O,?> pCallable)
Functions.FailableCallable into a standard Callable.O - the type used by the callablespCallable - a FailableCallableCallablepublic static <I1,I2> BiConsumer<I1,I2> asBiConsumer(Functions.FailableBiConsumer<I1,I2,?> pConsumer)
Functions.FailableBiConsumer into a standard BiConsumer.I1 - the type of the first argument of the consumersI2 - the type of the second argument of the consumerspConsumer - a failable BiConsumerBiConsumerpublic static <I,O> Function<I,O> asFunction(Functions.FailableFunction<I,O,?> pFunction)
Functions.FailableFunction into a standard Function.I - the type of the input of the functionsO - the type of the output of the functionspFunction - a {code FailableFunction}Functionpublic static <I1,I2,O> BiFunction<I1,I2,O> asBiFunction(Functions.FailableBiFunction<I1,I2,O,?> pFunction)
Functions.FailableBiFunction into a standard BiFunction.I1 - the type of the first argument of the input of the functionsI2 - the type of the second argument of the input of the functionsO - the type of the output of the functionspFunction - a FailableBiFunctionBiFunctionpublic static <I> Predicate<I> asPredicate(Functions.FailablePredicate<I,?> pPredicate)
Functions.FailablePredicate into a standard Predicate.I - the type used by the predicatespPredicate - a FailablePredicatePredicatepublic static <I1,I2> BiPredicate<I1,I2> asBiPredicate(Functions.FailableBiPredicate<I1,I2,?> pPredicate)
Functions.FailableBiPredicate into a standard BiPredicate.I1 - the type of the first argument used by the predicatesI2 - the type of the second argument used by the predicatespPredicate - a FailableBiPredicateBiPredicatepublic static <O> Supplier<O> asSupplier(Functions.FailableSupplier<O,?> pSupplier)
Functions.FailableSupplier into a standard Supplier.O - the type supplied by the supplierspSupplier - a FailableSupplierSupplierpublic static <T extends Throwable> void run(Functions.FailableRunnable<T> pRunnable)
RuntimeException.T - the type of checked exception the runnable may throwpRunnable - The runnable to runpublic static <O,T extends Throwable> O call(Functions.FailableCallable<O,T> pCallable)
RuntimeException.O - the return type of the callableT - the type of checked exception the callable may throwpCallable - the callable to callpublic static <O,T extends Throwable> void accept(Functions.FailableConsumer<O,T> pConsumer, O pObject)
RuntimeException.O - the type the consumer acceptsT - the type of checked exception the consumer may throwpConsumer - the consumer to consumepObject - the object to consume by pConsumerpublic static <O1,O2,T extends Throwable> void accept(Functions.FailableBiConsumer<O1,O2,T> pConsumer, O1 pObject1, O2 pObject2)
RuntimeException.O1 - the type of the first argument the consumer acceptsO2 - the type of the second argument the consumer acceptsT - the type of checked exception the consumer may throwpConsumer - the consumer to consumepObject1 - the first object to consume by pConsumerpObject2 - the second object to consume by pConsumerpublic static <I,O,T extends Throwable> O apply(Functions.FailableFunction<I,O,T> pFunction, I pInput)
RuntimeException.I - the type of the argument the function acceptsO - the return type of the functionT - the type of checked exception the function may throwpFunction - the function to applypInput - the input to apply pFunction onpublic static <I1,I2,O,T extends Throwable> O apply(Functions.FailableBiFunction<I1,I2,O,T> pFunction, I1 pInput1, I2 pInput2)
RuntimeException.I1 - the type of the first argument the function acceptsI2 - the type of the second argument the function acceptsO - the return type of the functionT - the type of checked exception the function may throwpFunction - the function to applypInput1 - the first input to apply pFunction onpInput2 - the second input to apply pFunction onpublic static <O,T extends Throwable> boolean test(Functions.FailablePredicate<O,T> pPredicate, O pObject)
RuntimeException.O - the type of argument the predicate testsT - the type of checked exception the predicate may throwpPredicate - the predicate to testpObject - the input to test by pPredicatepublic static <O1,O2,T extends Throwable> boolean test(Functions.FailableBiPredicate<O1,O2,T> pPredicate, O1 pObject1, O2 pObject2)
RuntimeException.O1 - the type of the first argument the predicate testsO2 - the type of the second argument the predicate testsT - the type of checked exception the predicate may throwpPredicate - the predicate to testpObject1 - the first input to test by pPredicatepObject2 - the second input to test by pPredicatepublic static <O,T extends Throwable> O get(Functions.FailableSupplier<O,T> pSupplier)
O - The suppliers output type.T - The type of checked exception, which the supplier can throw.pSupplier - The supplier to invoke.@SafeVarargs public static void tryWithResources(Functions.FailableRunnable<? extends Throwable> pAction, Functions.FailableConsumer<Throwable,? extends Throwable> pErrorHandler, Functions.FailableRunnable<? extends Throwable>... pResources)
AutoCloseable interface. The method
executes the pAction. The method guarantees, that all
the pResources are being executed, in the given order, afterwards,
and regardless of success, or failure. If either the original action, or
any of the resource action fails, then the first failure (aka
Throwable is rethrown. Example use:
final FileInputStream fis = new FileInputStream("my.file");
Functions.tryWithResources(useInputStream(fis), null, () -> fis.close());
pAction - The action to execute. This object will always
be invoked.pErrorHandler - An optional error handler, which will be invoked finally,
if any error occurred. The error handler will receive the first
error, aka Throwable.pResources - The resource actions to execute. All resource
actions will be invoked, in the given order. A resource action is an
instance of Functions.FailableRunnable, which will be executed.tryWithResources(FailableRunnable, FailableRunnable...)@SafeVarargs public static void tryWithResources(Functions.FailableRunnable<? extends Throwable> pAction, Functions.FailableRunnable<? extends Throwable>... pResources)
AutoCloseable interface. The method
executes the pAction. The method guarantees, that all
the pResources are being executed, in the given order, afterwards,
and regardless of success, or failure. If either the original action, or
any of the resource action fails, then the first failure (aka
Throwable is rethrown. Example use:
final FileInputStream fis = new FileInputStream("my.file");
Functions.tryWithResources(useInputStream(fis), () -> fis.close());
pAction - The action to execute. This object will always
be invoked.pResources - The resource actions to execute. All resource
actions will be invoked, in the given order. A resource action is an
instance of Functions.FailableRunnable, which will be executed.tryWithResources(FailableRunnable, FailableConsumer, FailableRunnable...)public static RuntimeException rethrow(Throwable pThrowable)
Throwable as an unchecked exception.pThrowable - The throwable to rethrowCopyright © 2001–2019 The Apache Software Foundation. All rights reserved.