Exception-friendly functional interfaces named by the number of arguments: Fn0, Fn1, Fn2....
All of these have an applyEx() method that that throws an Exception and returns a result.
Implementers should override the applyEx() method (this happens automatically when you use Java 8's lambda syntax).
Each interface also has a default apply() method for consumers of this function to call.
It re-throws all exceptions after wrapping any checked ones in unchecked RuntimeExceptions.
For simplicity, there are no primitive versions of these functions, no "void" return types, and no special-purpose funny names.
If you don't want to return a result, declare the return type as ? and return null.
Comparing just the Consumer interfaces from { @link java.util.function}:
| java.util.function | org.organicdesign.fp.function |
|---|---|
| Consumer<T> | Fn1<T,?> |
| DoubleConsumer | Fn1<Double,?> |
| IntConsumer | Fn1<Integer,?> |
| LongConsumer | Fn1<Long,?> |
| BiConsumer<T,U> | Fn2<T,U,?> |
| ObjDoubleConsumer<T> | Fn2<T,Double,?> |
| ObjIntConsumer<T> | Fn2<T,Integer,?> |
| ObjLongConsumer<T> | Fn2<T,Long,?> |