我试图理解“e”如何适合java中的以下lambda表达式:
testButton.addActionListener(e -> System.out.println("Click Detected by Lambda Listner"));
为什么它是“e”?不应该是“()”吗?
答案 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");
中,e
是ActionEvent
。如果接口中的单个方法根本没有参数,则只能用()
替换它。
答案 2 :(得分:1)