在匿名 class 中表示柯里化的方式(从 lambda 表达式转换)。嵌套函数

Way to represent currying in anonymous class (conversion from lambda expression). Nested functions

您好,我只是想检查一下我的实现和理解是否正确。我试图将一种嵌套的 lambda 转换为匿名 class Function<Integer,Function<Integer,Function<Integer,Integer>>> h = x -> y -> z-> x + y + z

这是将其表示为匿名的合适方式吗class?

Function<Integer,Function<Integer,Function<Integer,Integer>>> h = new Function <> ( 
int x, y;
@Override 
Function<Integer,Function<Integer,Integer>> apply ( Integer x)

              return y-> z-> (x+y+z);
   }
};

为了将 lambda 转化为匿名函数,你应该一点一点地分解它,每个 -> 对应一个匿名函数实例化,这最终会是这样的:

var h = new Function<Integer,Function<Integer,Function<Integer,Integer>>>() {
  public Function<Integer,Function<Integer,Integer>> apply(Integer x) {
    return new Function<Integer,Function<Integer,Integer>>() {
      public Function<Integer,Integer> apply(Integer y) {
        return new Function<Integer,Integer>() {
          public Integer apply(Integer z) {
            return x + y + z;
          }
        };
      }
    };
  }
};