import java.util.function.Function;
class Java8Tester {
public static void main
(String args
[]){ Java8Tester tester = new Java8Tester();
MathOperation test = a->b->a*~a*b*~b/4;
System.
out.
println(tester.
operate(0,
0, test
)); System.
out.
println(tester.
operate(1,
1, test
)); System.
out.
println(tester.
operate(3,
3, test
)); System.
out.
println(tester.
operate(4,
4, test
)); System.
out.
println(tester.
operate(6,
7, test
)); }
interface MathOperation {
Function
<Integer, Integer
> operation
(int a
); }
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a).apply(b);
}
}
aW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5GdW5jdGlvbjsKCmNsYXNzIEphdmE4VGVzdGVyIHsKICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSl7CiAgICAgIEphdmE4VGVzdGVyIHRlc3RlciA9IG5ldyBKYXZhOFRlc3RlcigpOwoJCQogICAgICBNYXRoT3BlcmF0aW9uIHRlc3QgPSBhLT5iLT5hKn5hKmIqfmIvNDsKCQkKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Rlci5vcGVyYXRlKDAsIDAsIHRlc3QpKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Rlci5vcGVyYXRlKDEsIDEsIHRlc3QpKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Rlci5vcGVyYXRlKDMsIDMsIHRlc3QpKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Rlci5vcGVyYXRlKDQsIDQsIHRlc3QpKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Rlci5vcGVyYXRlKDYsIDcsIHRlc3QpKTsKICAgfQoJCiAgIGludGVyZmFjZSBNYXRoT3BlcmF0aW9uIHsKICAgICAgRnVuY3Rpb248SW50ZWdlciwgSW50ZWdlcj4gb3BlcmF0aW9uKGludCBhKTsKICAgfQoJCiAgIHByaXZhdGUgaW50IG9wZXJhdGUoaW50IGEsIGludCBiLCBNYXRoT3BlcmF0aW9uIG1hdGhPcGVyYXRpb24pewogICAgICByZXR1cm4gbWF0aE9wZXJhdGlvbi5vcGVyYXRpb24oYSkuYXBwbHkoYik7CiAgIH0KfQ==