我正在使用这样的lambda:
TwoValueCommand addition = (a, b) -> a + b;
return pushTwoValueCommand(addition);
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以这样写:
return pushTwoValueCommand(TwoValueCommand (a, b) -> a + b);
Run Code Online (Sandbox Code Playgroud)
无需创建变量?
编辑
这些问题的答案:
为我指明了正确的方向,但无论如何,他们的用词差异都足以让我发布。
从如何使用lambda初始化字段中,我确定可以做到这一点:
return pushTwoValueCommand((TwoValueCommand) (a, b) -> a + b); // put parentheses around type to cast lambda expression
Run Code Online (Sandbox Code Playgroud)
从@ernest_k,我也可以执行以下操作:
return pushTwoValueCommand((a, b) -> a + b);
Run Code Online (Sandbox Code Playgroud)
(尽管我不了解该版本的工作方式-不必使用功能界面吗?https://medium.freecodecamp.org/learn-these-4-things-and-working-with-lambda-表达式-b0ab36e0fffc)
编辑
@AndrewTobilko的答案很好地解释了为什么您可以这样做(无需演员)。可以从pushTwoValueCommand的方法定义中推断类型,只要没有使pushTwoValueCommand重载(pushTwoValueCommand的多个定义),编译器就无法确定要使用哪个函数接口。