java - JavaFX 中使用事件的这些方法是否相同?

标签 java lambda anonymous-class

我有一个按钮,我希望当我将鼠标悬停在按钮上时显示文本。

这两种方法都有效,但是可以互换使用吗?

// First
EventHandler<MouseEvent> eventHandler = new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent e) {
        System.out.println("Hello World");
    }
};
button.setOnMouseEntered(eventHandler);

// Second. Lambda expression.
button.setOnMouseEntered(e -> {
    System.out.println("Hello ");
});

我不太明白第一个问题。我想EventHandler<MouseEvent>是类型和 eventHandler是对象的名称。正确的?

最佳答案

是的,它们都会执行相同的代码。

第一个是所谓的匿名类。这意味着您可以直接重写继承接口(interface)的方法(在本例中为句柄),而不必使用其他类/接口(interface)来执行此操作。

然后将处理程序实例传递给 setOnMouseEntered 方法。

lambda 表达式也可以执行此操作,但由于该方法需要特定的对象类型,因此您可以使用 lambda 表达式将其写得更短。

eeventHandler 基本相同

关于java - JavaFX 中使用事件的这些方法是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58189107/

相关文章:

vb.net - 如何在 vb.net 中使用 lambda 删除列表的指定项目

c# - 我需要退订吗?

c# - 如何删除 IEnumerable<MyClass> 中的项目?

java - 加斯顿和阿尔方斯示例 : How does the bowBack get accessed?

java - 如何从sqlite数据库中获取dd/mm/yyyy格式的两个日期之间的数据

java - 在数组列表中替换

java - DTO应该使用继承还是组合

java - 如何在 Java 中使用 pdfbox 2.0 创建线性化(快速 Web View )pdf?

Java 匿名类和垃圾收集器

java - 从Java中的匿名对象访问非静态对象