此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包含可以使用的接口,例如IntUnaryOperatorIntBinaryOperator

07-26 02:57