Pas*_*mer 3 java lambda expression javafx eventhandler
我正在尝试重写这段代码
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println(e.hashCode());
}
};
Run Code Online (Sandbox Code Playgroud)
作为
new EventHandler<MouseEvent>(e -> System.out.println(e.hashCode()));
Run Code Online (Sandbox Code Playgroud)
我收到错误。我在这里犯了什么错误?
lambda 表达式在这里取代了整个过程FunctionalInterface,而不仅仅是它的方法,所以它constructor + lambda不仅仅是lambda:
使用EventHandleras 参数:
someNode.addEventHandler(MouseEvent.MOUSE_CLICKED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println(event.hashCode());
}
});
Run Code Online (Sandbox Code Playgroud)
变成:
someNode.addEventHandler(MouseEvent.MOUSE_CLICKED,
event -> System.out.println(event.hashCode()));
Run Code Online (Sandbox Code Playgroud)EventHandler在变量中使用:
EventHandler<MouseEvent> eh = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println(event.hashCode());
}
};
Run Code Online (Sandbox Code Playgroud)
它将变成:
EventHandler<MouseEvent> eh = e -> System.out.println(e.hashCode());
Run Code Online (Sandbox Code Playgroud)存在多种使用 lambda 的方式,带或不带参数,例如:
Runnable r = () -> System.out.println("Here");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16634 次 |
| 最近记录: |