在Java8中,方法可以创建为Lambda表达式,并且可以通过引用传递(只需做一点工作)。在线上有很多创建lambda并与方法一起使用的示例,但是没有关于如何创建以lambda为参数的方法的示例。它的语法是什么
MyClass.method((a,b)->a+b);
类MyClass{
//如何定义此方法?
静态整数方法(λl){
返回l(5,10);
}
}
lambda纯粹是一个调用站点构造:lambda的接收者不需要知道涉及到lambda,而是接受具有适当方法的接口
换句话说,您定义或使用一个函数接口(即具有单个方法的接口),该接口完全接受并返回您想要的内容
为此,Java 8在java.util.function(感谢Maurice Naftalin了解关于JavaDoc的提示)
对于这个特定的用例,有java.util.function.IntBinaryOperatorwith一个int-applyAsInt(int-left,int-right)方法,因此您可以像这样编写方法:
静态int方法(IntBinaryOperator op){
返回op.applyAsInt(5,10);
}
但您也可以定义自己的接口,并像这样使用它:
公共接口TwoArgIntOperator{
公共int op(int a、int b);
}
//其他地方:
静态int方法(TwoArgIntOperator运算符){
返回操作符op(5,10);
}
然后使用lambda作为参数调用该方法:
公共静态void main(字符串[]args){
TwoArgIntOperator addTwoInts=(a,b)->;a+b;
int结果=方法(addTwoInts);
System.out.println(“结果:”+结果);
}
使用您自己的接口的优点是,您可以使用更清楚地指示意图的名称