java中的Lambda表达式语法

时间:2017-12-13 04:33:43

标签: java lambda

我试图理解“e”如何适合java中的以下lambda表达式:

testButton.addActionListener(e -> System.out.println("Click Detected by Lambda Listner"));

为什么它是“e”?不应该是“()”吗?

3 个答案:

答案 0 :(得分:1)

e这里是变量的名称(方法的参数),它可以是任何东西。 e可能是ActionEvent类型,()表示没有参数的方法

答案 1 :(得分:1)

addActionListener方法需要ActionListener,这是一个具有单一方法的接口

 public void actionPerformed(ActionEvent e);

在Java 8中,您可以使用lambda表达式来实现具有类似这一方法的接口。规则是lambda表达式必须具有与接口中的方法相同的参数类型和返回类型。然后,编译器可以将lambda表达式转换为实现接口的类。

所以在这种特殊情况下,你需要一个

的lambda表达式
  • 只有一个参数 - ActionEvent
  • void返回类型 - 也就是说,它不会返回任何内容。

e -> System.out.println("something");中,eActionEvent。如果接口中的单个方法根本没有参数,则只能用()替换它。

答案 2 :(得分:1)

由于您将单个参数传递给Lamda表达式,因此不必强制()

如果我们传递多个参数或没有参数,则必须使用()

我相信这个Link将有助于理解与您的问题相关的lamda表达