在 Java 8 中,方法可以创建为 Lambda 表达式,并且可以通过引用传递(需要一些底层工作)。网上有很多关于创建 lambda 并将其与方法一起使用的示例,但没有关于如何创建将 lambda 作为参数的方法的示例。它的语法是什么?
MyClass.method((a, b) -> a+b);
class MyClass{
//How do I define this method?
static int method(Lambda l){
return l(5, 10);
}
}
原文由 Marius 发布,翻译遵循 CC BY-SA 4.0 许可协议
Lambda 纯粹是一个调用站点构造:Lambda 的接收者不需要知道涉及 Lambda,而是接受具有适当方法的接口。
换句话说,您定义或使用一个函数式接口(即具有单一方法的接口)来准确地接受和返回您想要的内容。
自 Java 8 以来,在
java.util.function
中有一组常用的接口类型。对于这个特定的用例,有一个
java.util.function.IntBinaryOperator
和 一个int applyAsInt(int left, int right)
方法,所以你可以这样写你的method
但是您也可以定义自己的接口并像这样使用它:
然后使用 lambda 作为参数调用该方法:
使用您自己的界面的好处是您可以使用更清楚地表明意图的名称。