繁体   English   中英

Lambda java 中的表达式语法

[英]Lambda expression syntax in java

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

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

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

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

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

 public void actionPerformed(ActionEvent e);

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

因此,在这种情况下,您需要一个lambda表达式

  • 有一个参数ActionEvent
  • 具有void返回类型-也就是说,它不返回任何内容。

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

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

如果我们传递多个参数或不传递任何参数,则必须使用()

我相信此链接将有助于理解与您的问题相关的lamda表达

线程 Runnable 接口中的 Lambda 表达式是函数接口,只有一个 run() 方法在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM