gpt4 book ai didi

java - 如何使用 EventHandler javafx 编写 lambda 表达式

转载 作者:行者123 更新时间:2023-12-05 01:44:38 26 4
gpt4 key购买 nike

我正在尝试重写这段代码

new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent e) {
System.out.println(e.hashCode());
}
};

作为

new EventHandler<MouseEvent>(e -> System.out.println(e.hashCode()));

然后我收到错误。我的错误是什么?

最佳答案

lambda 表达式在这里取代了整个 FunctionalInterface 而不仅仅是它的方法,所以它不是 constructor + lambda 而只是 lambda :

  1. 使用EventHandler作为参数:

    someNode.addEventHandler(MouseEvent.MOUSE_CLICKED, 
    new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
    System.out.println(event.hashCode());
    }
    });

    变成:

     someNode.addEventHandler(MouseEvent.MOUSE_CLICKED, 
    event -> System.out.println(event.hashCode()));

  1. 在变量中使用 EventHandler :

    EventHandler<MouseEvent> eh = new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
    System.out.println(event.hashCode());
    }
    };

    它将变成:

    EventHandler<MouseEvent> eh = e -> System.out.println(e.hashCode());


存在多种使用 lambda 的方式,有或没有参数,例如:

Runnable r = () -> System.out.println("Here");

关于java - 如何使用 EventHandler javafx 编写 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com