如何使用 EventHandler javafx 编写 lambda 表达式
How to write lambda expression with EventHandler javafx
我正在尝试重写这段代码
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
:
使用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()));
在变量中使用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");
我正在尝试重写这段代码
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
:
使用
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()));
在变量中使用
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");