Java 将lambda表达式转换回内部类?
我有以下lambda表达式:Java 将lambda表达式转换回内部类?,java,lambda,java-8,Java,Lambda,Java 8,我有以下lambda表达式: Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>> someComputation = i1 -> i2 -> f -> f.apply(i1, i2); Function someComputation=i1->i2->f->f.apply(i1,i2); Java 8 lambda语法
Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>> someComputation = i1 -> i2 -> f -> f.apply(i1, i2);
Function someComputation=i1->i2->f->f.apply(i1,i2);
Java 8 lambda语法对我来说仍然有点陌生,所以我尝试将其转换回内部类,但似乎无法转换,因为它会引发编译错误,或者可能缺少一些内容。
以下是我的想法:
Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>> someComputation2 = new Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>>() {
@Override
public Function<Integer, Function<BinaryOperator<Integer>, Integer>> apply(Integer integer) {
Function<Integer, Function<BinaryOperator<Integer>, Integer>> f = new Function<Integer, Function<BinaryOperator<Integer>, Integer>>() {
@Override
public Function<BinaryOperator<Integer>, Integer> apply(Integer integer) {
return new Function<BinaryOperator<Integer>, Integer>() {
@Override
public Integer apply(BinaryOperator<Integer> integerBinaryOperator) {
return integerBinaryOperator.apply(f,""" WHAT IS IN HERE ???""");
}
};
}
};
return f;
}
};
Function someComputation2=新函数(){
@凌驾
公共函数应用(整数){
函数f=新函数(){
@凌驾
公共函数应用(整数){
返回新函数(){
@凌驾
公共整数应用(二进制运算符integerBinaryOperator){
返回integerBinaryOperator.apply(f,““这里是什么?”);
}
};
}
};
返回f;
}
};
在外部匿名类实例的方法中有两个整数
变量。以下是应传递给最内部方法调用的变量:
Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>> someComputation2 = new Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>>() {
@Override
public Function<Integer, Function<BinaryOperator<Integer>, Integer>> apply(Integer i1) {
Function<Integer, Function<BinaryOperator<Integer>, Integer>> f = new Function<Integer, Function<BinaryOperator<Integer>, Integer>>() {
@Override
public Function<BinaryOperator<Integer>, Integer> apply(Integer i2) {
return new Function<BinaryOperator<Integer>, Integer>() {
@Override
public Integer apply(BinaryOperator<Integer> integerBinaryOperator) {
return integerBinaryOperator.apply(i1, i2);
}
};
}
};
return f;
}
};
Function someComputation2=新函数(){
@凌驾
公共函数应用(整数i1){
函数f=新函数(){
@凌驾
公共函数应用(整数i2){
返回新函数(){
@凌驾
公共整数应用(二进制运算符integerBinaryOperator){
返回integerBinaryOperator.apply(i1,i2);
}
};
}
};
返回f;
}
};
如果您使用的是Eclipse或其他等效的Java IDE,则可以生成一些框架代码,然后连接所需的实现。你所期望的是
Function<Integer, Function<Integer, Function<BinaryOperator<Integer>, Integer>>> someComputation = new Function<Integer, Function<Integer,Function<BinaryOperator<Integer>,Integer>>>() {
@Override
public Function<Integer, Function<BinaryOperator<Integer>, Integer>> apply(Integer t1) {
return new Function<Integer, Function<BinaryOperator<Integer>,Integer>>() {
@Override
public Function<BinaryOperator<Integer>, Integer> apply(Integer t2) {
return new Function<BinaryOperator<Integer>, Integer>() {
@Override
public Integer apply(BinaryOperator<Integer> t3) {
return t3.apply(t1, t2);
}
};
}
};
}
};
函数someComputation=新函数(){
@凌驾
公共函数应用(整数t1){
返回新函数(){
@凌驾
公共函数应用(整数t2){
返回新函数(){
@凌驾
公共整数应用(二进制运算符t3){
返回t3。应用(t1,t2);
}
};
}
};
}
};
即使您不熟悉lambda语法,也不是用一吨样板文件替换一行可读代码的理由code@AndrewTobilko如果新语法令人困惑,理解它的最好方法之一就是将它转换回您已经知道的内容。不要抨击学习。@AndrewTobilko我不是在代码中这样做的。。。我只是在学习,只是感到困惑。。。这是我试图理解的文章