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> consumer,
      O1 object1,
      O2 object2)
Consumes a consumer and rethrows any exception as a  
RuntimeException. | 
static <O,T extends Throwable> | 
accept(Functions.FailableConsumer<O,T> consumer,
      O object)
Consumes a consumer and rethrows any exception as a  
RuntimeException. | 
static <I1,I2,O,T extends Throwable> | 
apply(Functions.FailableBiFunction<I1,I2,O,T> function,
     I1 input1,
     I2 input2)
Applies a function and rethrows any exception as a  
RuntimeException. | 
static <I,O,T extends Throwable> | 
apply(Functions.FailableFunction<I,O,T> function,
     I input)
Applies a function and rethrows any exception as a  
RuntimeException. | 
static <I1,I2> BiConsumer<I1,I2> | 
asBiConsumer(Functions.FailableBiConsumer<I1,I2,?> consumer)
Converts the given  
Functions.FailableBiConsumer into a standard BiConsumer. | 
static <I1,I2,O> BiFunction<I1,I2,O> | 
asBiFunction(Functions.FailableBiFunction<I1,I2,O,?> function)
Converts the given  
Functions.FailableBiFunction into a standard BiFunction. | 
static <I1,I2> BiPredicate<I1,I2> | 
asBiPredicate(Functions.FailableBiPredicate<I1,I2,?> predicate)
Converts the given  
Functions.FailableBiPredicate into a standard BiPredicate. | 
static <O> Callable<O> | 
asCallable(Functions.FailableCallable<O,?> callable)
Converts the given  
Functions.FailableCallable into a standard Callable. | 
static <I> Consumer<I> | 
asConsumer(Functions.FailableConsumer<I,?> consumer)
Converts the given  
Functions.FailableConsumer into a standard Consumer. | 
static <I,O> Function<I,O> | 
asFunction(Functions.FailableFunction<I,O,?> function)
Converts the given  
Functions.FailableFunction into a standard Function. | 
static <I> Predicate<I> | 
asPredicate(Functions.FailablePredicate<I,?> predicate)
Converts the given  
Functions.FailablePredicate into a standard Predicate. | 
static Runnable | 
asRunnable(Functions.FailableRunnable<?> runnable)
Converts the given  
Functions.FailableRunnable into a standard Runnable. | 
static <O> Supplier<O> | 
asSupplier(Functions.FailableSupplier<O,?> supplier)
Converts the given  
Functions.FailableSupplier into a standard Supplier. | 
static <O,T extends Throwable> | 
call(Functions.FailableCallable<O,T> callable)
Calls a callable and rethrows any exception as a  
RuntimeException. | 
static <O,T extends Throwable> | 
get(Functions.FailableSupplier<O,T> supplier)
Invokes the supplier, and returns the result. 
 | 
static RuntimeException | 
rethrow(Throwable throwable)
Rethrows a  
Throwable as an unchecked exception. | 
static <T extends Throwable> | 
run(Functions.FailableRunnable<T> runnable)
Runs a runnable and rethrows any exception as a  
RuntimeException. | 
static <O> Streams.FailableStream<O> | 
stream(Collection<O> collection)
Converts the given collection into a  
Streams.FailableStream. | 
static <O> Streams.FailableStream<O> | 
stream(Stream<O> stream)
Converts the given stream into a  
Streams.FailableStream. | 
static <O1,O2,T extends Throwable> | 
test(Functions.FailableBiPredicate<O1,O2,T> predicate,
    O1 object1,
    O2 object2)
Tests a predicate and rethrows any exception as a  
RuntimeException. | 
static <O,T extends Throwable> | 
test(Functions.FailablePredicate<O,T> predicate,
    O object)
Tests a predicate and rethrows any exception as a  
RuntimeException. | 
static void | 
tryWithResources(Functions.FailableRunnable<? extends Throwable> action,
                Functions.FailableConsumer<Throwable,? extends Throwable> errorHandler,
                Functions.FailableRunnable<? extends Throwable>... resources)
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> action,
                Functions.FailableRunnable<? extends Throwable>... resources)
A simple try-with-resources implementation, that can be used, if your
 objects do not implement the  
AutoCloseable interface. | 
public Functions()
public static Runnable asRunnable(Functions.FailableRunnable<?> runnable)
Functions.FailableRunnable into a standard Runnable.runnable - a FailableRunnableRunnablepublic static <I> Consumer<I> asConsumer(Functions.FailableConsumer<I,?> consumer)
Functions.FailableConsumer into a standard Consumer.I - the type used by the consumersconsumer - a FailableConsumerConsumerpublic static <O> Callable<O> asCallable(Functions.FailableCallable<O,?> callable)
Functions.FailableCallable into a standard Callable.O - the type used by the callablescallable - a FailableCallableCallablepublic static <I1,I2> BiConsumer<I1,I2> asBiConsumer(Functions.FailableBiConsumer<I1,I2,?> consumer)
Functions.FailableBiConsumer into a standard BiConsumer.I1 - the type of the first argument of the consumersI2 - the type of the second argument of the consumersconsumer - a failable BiConsumerBiConsumerpublic static <I,O> Function<I,O> asFunction(Functions.FailableFunction<I,O,?> function)
Functions.FailableFunction into a standard Function.I - the type of the input of the functionsO - the type of the output of the functionsfunction - a {code FailableFunction}Functionpublic static <I1,I2,O> BiFunction<I1,I2,O> asBiFunction(Functions.FailableBiFunction<I1,I2,O,?> function)
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 functionsfunction - a FailableBiFunctionBiFunctionpublic static <I> Predicate<I> asPredicate(Functions.FailablePredicate<I,?> predicate)
Functions.FailablePredicate into a standard Predicate.I - the type used by the predicatespredicate - a FailablePredicatePredicatepublic static <I1,I2> BiPredicate<I1,I2> asBiPredicate(Functions.FailableBiPredicate<I1,I2,?> predicate)
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 predicatespredicate - a FailableBiPredicateBiPredicatepublic static <O> Supplier<O> asSupplier(Functions.FailableSupplier<O,?> supplier)
Functions.FailableSupplier into a standard Supplier.O - the type supplied by the supplierssupplier - a FailableSupplierSupplierpublic static <T extends Throwable> void run(Functions.FailableRunnable<T> runnable)
RuntimeException.T - the type of checked exception the runnable may throwrunnable - The runnable to runpublic static <O,T extends Throwable> O call(Functions.FailableCallable<O,T> callable)
RuntimeException.O - the return type of the callableT - the type of checked exception the callable may throwcallable - the callable to callpublic static <O,T extends Throwable> void accept(Functions.FailableConsumer<O,T> consumer, O object)
RuntimeException.O - the type the consumer acceptsT - the type of checked exception the consumer may throwconsumer - the consumer to consumeobject - the object to consume by consumerpublic static <O1,O2,T extends Throwable> void accept(Functions.FailableBiConsumer<O1,O2,T> consumer, O1 object1, O2 object2)
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 throwconsumer - the consumer to consumeobject1 - the first object to consume by consumerobject2 - the second object to consume by consumerpublic static <I,O,T extends Throwable> O apply(Functions.FailableFunction<I,O,T> function, I input)
RuntimeException.I - the type of the argument the function acceptsO - the return type of the functionT - the type of checked exception the function may throwfunction - the function to applyinput - the input to apply function onpublic static <I1,I2,O,T extends Throwable> O apply(Functions.FailableBiFunction<I1,I2,O,T> function, I1 input1, I2 input2)
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 throwfunction - the function to applyinput1 - the first input to apply function oninput2 - the second input to apply function onpublic static <O,T extends Throwable> boolean test(Functions.FailablePredicate<O,T> predicate, O object)
RuntimeException.O - the type of argument the predicate testsT - the type of checked exception the predicate may throwpredicate - the predicate to testobject - the input to test by predicatepublic static <O1,O2,T extends Throwable> boolean test(Functions.FailableBiPredicate<O1,O2,T> predicate, O1 object1, O2 object2)
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 throwpredicate - the predicate to testobject1 - the first input to test by predicateobject2 - the second input to test by predicatepublic static <O,T extends Throwable> O get(Functions.FailableSupplier<O,T> supplier)
O - The suppliers output type.T - The type of checked exception, which the supplier can throw.supplier - The supplier to invoke.public static <O> Streams.FailableStream<O> stream(Stream<O> stream)
Streams.FailableStream. The
 Streams.FailableStream consists of the same elements, than the
 input stream. However, failable lambdas, like
 Functions.FailablePredicate, Functions.FailableFunction, and
 Functions.FailableConsumer may be applied, rather than
 Predicate, Function, Consumer, etc.O - The streams element type.stream - The stream, which is being converted into a
   Streams.FailableStream.Streams.FailableStream.public static <O> Streams.FailableStream<O> stream(Collection<O> collection)
Streams.FailableStream.
 The Streams.FailableStream consists of the collections
 elements. Shortcut for
 Functions.stream(collection.stream());
O - The collections element type. (In turn, the result
   streams element type.)collection - The collection, which is being converted into a
   Streams.FailableStream.Streams.FailableStream.@SafeVarargs public static void tryWithResources(Functions.FailableRunnable<? extends Throwable> action, Functions.FailableConsumer<Throwable,? extends Throwable> errorHandler, Functions.FailableRunnable<? extends Throwable>... resources)
AutoCloseable interface. The method
 executes the action. The method guarantees, that all
 the resources 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());
 action - The action to execute. This object will always
   be invoked.errorHandler - An optional error handler, which will be invoked finally,
   if any error occurred. The error handler will receive the first
   error, aka Throwable.resources - 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> action, Functions.FailableRunnable<? extends Throwable>... resources)
AutoCloseable interface. The method
 executes the action. The method guarantees, that all
 the resources 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());
 action - The action to execute. This object will always
   be invoked.resources - 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 throwable)
Rethrows a Throwable as an unchecked exception. If the argument is
 already unchecked, namely a RuntimeException or Error then
 the argument will be rethrown without modification. If the exception is
 IOException then it will be wrapped into a UncheckedIOException.
 In every other cases the exception will be wrapped into a UndeclaredThrowableException
Note that there is a declared return type for this method, even though it never returns. The reason for that is to support the usual pattern:
      throw rethrow(myUncheckedException);
 
 instead of just calling the method. This pattern may help the Java compiler to
 recognize that at that point an exception will be thrown and the code flow
 analysis will not demand otherwise mandatory commands that could follow the
 method call, like a return statement from a value returning method.
throwable - The throwable to rethrow ossibly wrapped into an unchecked exceptionCopyright © 2001–2020 The Apache Software Foundation. All rights reserved.