Javaによる関数型プログラミング

Java による関数型プログラミングでは、予め interface を定義しておかなければならないのでちょっと面倒です。最近の新しいプログラミング言語のようにもう少し簡潔に記述できればいいと思うのですが...

functional.java

interface Function {
  int apply(int x, int y);
}

class Main {
  static int apply(Function function, int x, int y) {
    return function.apply(x, y);
  }

  public static void main(String[] args) {
    Function add1 = (x, y) -> x + y;
    Function add2 = (int x, int y) -> {return x + y;};
    Function add3 = new Function() {
      public int apply(int x, int y) {
        return x + y;
      }
    };
    System.out.println(add1.apply(1, 1));
    System.out.println(add2.apply(1, 1));
    System.out.println(add3.apply(1, 1));
    System.out.println(apply(add1, 1, 1));
    System.out.println(apply(add2, 1, 1));
    System.out.println(apply(add3, 1, 1));
  }
}

実行結果

2
2
2
2
2
2

広告