1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package Torello.Java.Function; import java.util.function.Function; /** * Function-Pointer * <SPAN CLASS=TJF>Input:</SPAN> {@code int, long} * <SPAN CLASS=TJF>Output:</SPAN> {@code R}. * * <BR /><BR /> * <EMBED CLASS='external-html' DATA-FILE-ID=TWO_PRIMITIVE_FUNC> * <EMBED CLASS="globalDefs" DATA-Type1=int DATA-Type2=long> * * @param <R> The type of the function-output. */ @FunctionalInterface public interface IntLongFunction<R> { /** * Applies this function to the given arguments. * <BR /><BR /><EMBED CLASS='external-html' DATA-FILE-ID=FUNC_INTER_METH> * * @param i The integer (first) argument to the function. * @param l The long (second) argument to the function. * @return The function result. Result shall be of type {@code 'R'} */ public R apply(int i, long l); /** * Returns a composed function that first applies {@code 'this'} function to its input, and * then applies the {@code 'after'} function to the result. If evaluation of either function * throws an exception, it is relayed to the caller of the composed function. * * @param <V> The output-type of the {@code 'after'} function, and also of the (returned) * {@code 'composed'} function. * * @param after The function to apply, after this function is applied. * @throws NullPointerException This throws if null is passed to {@code 'after'}. */ public default <V> IntLongFunction<V> andThen(Function<R, V> after) { if (after == null) throw new NullPointerException ("null has been passed to parameter 'after'"); return (int i, long l) -> after.apply(this.apply(i, l)); } } |