此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
来完成此操作,因为它是一个功能接口,其单个抽象方法需要两个int
参数。您需要一个用于一元操作的新界面。
顺便说一句,您不必自己定义这些接口。 java.util.function
包含可以使用的接口,例如IntUnaryOperator
和IntBinaryOperator
。