Java:使用lambda而不将其分配给变量

edm*_*qkk 3 java lambda

我正在使用这样的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初始化字段

将Java lambda的结果分配给字段

为我指明了正确的方向,但无论如何,他们的用词差异都足以让我发布。

edm*_*qkk 5

如何使用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的多个定义),编译器就无法确定要使用哪个函数接口。