代码之家  ›  专栏  ›  技术社区  ›  Jack BeNimble

java中的Lambda表达式语法

  •  -1
  • Jack BeNimble  · 技术社区  · 8 年前

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

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

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

    3 回复  |  直到 8 年前
        1
  •  1
  •   Courage    8 年前

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

        2
  •  1
  •   Dawood ibn Kareem    8 年前

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

     public void actionPerformed(ActionEvent e);
    

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

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

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

    在里面 e -> System.out.println("something"); 这个 e 按钮事件 . 你只能用 () 如果接口中的单个方法根本没有参数。

        3
  •  1
  •   Sasikumar Murugesan    8 年前

    由于要将单个参数传递给Lamda表达式,因此 ()

    如果我们传递多个参数或没有参数,那么 () 是强制性的。

    我相信这一点 Link 有助于理解与您的问题相关的lamda表达式