此 lambda 表达式非常适合具有两个操作数(a 和 b)的数学运算。
public class Math {
interface IntegerMath {
int operation(int a, int b);
}
private static int apply(int a, int b, IntegerMath op) {
return op.operation(a, b);
}
public static void main(String... args) {
IntegerMath addition = (a, b) -> a + b;
IntegerMath subtraction = (a, b) -> a - b;
System.out.println("40 + 2 = " + apply(40, 2, addition));
System.out.println("20 - 10 = " + apply(20, 10, subtraction));
}
}
如何通过可能的一元操作来增强此类
IntergerMath square = (a) -> a * a;
?
最佳答案
您无法使用 IntegerMath
来做到这一点,因为它是一个函数式接口(interface),其单个抽象方法需要两个 int
参数。您将需要一个用于一元运算的新接口(interface)。
顺便说一句,您不必自己定义这些接口(interface)。 java.util.function
包含您可以使用的接口(interface),例如 IntUnaryOperator
和 IntBinaryOperator
。
关于具有各种操作数的 Java lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651263/