Παράδειγμα σύνθεσης μεθόδων
import java.util.function.DoubleUnaryOperator;
import java.util.function.Function;
import static java.lang.Math.abs;
import static java.lang.Math.PI;
class Inverse {
// Return true if a almost equals b.
static boolean almostEquals(double a, double b) {
final double EPSILON = 1e-15;
return abs(a - b) < EPSILON;
}
public static void main(String args[]) {
Function<DoubleUnaryOperator, DoubleUnaryOperator> inverse =
(f) -> ( (x) -> 1. / f.applyAsDouble(x) );
DoubleUnaryOperator cot = inverse.apply(Math::tan);
DoubleUnaryOperator sec = inverse.apply(Math::cos);
DoubleUnaryOperator csc = inverse.apply(Math::sin);
// Verify value for key arguments.
assert almostEquals(sec.applyAsDouble(0), 1);
assert almostEquals(csc.applyAsDouble(PI / 2), 1);
assert almostEquals(cot.applyAsDouble(PI / 4), 1);
}
}