【发布时间】:2017-07-25 14:19:01
【问题描述】:
我正在尝试重写这段代码
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println(e.hashCode());
}
};
作为
new EventHandler<MouseEvent>(e -> System.out.println(e.hashCode()));
我得到错误。我的错误是什么?
【问题讨论】:
-
第一个代码块的 lambda 等效项只是
event -> System.out.println(event.hashCode())(没有调用构造函数,我认为这是你想要做的)。 -
简单来说,用 lambda 替换的是整个
functional interface,而不是接口中的函数。你的第一个代码 sn-p 的 lambda 等效项是event -> System.out.println(e.hashCode())。您所做的基本上是在构造函数中添加“lambda”。无效 -
@Pascal Hoffenheimer 如果答案让您满意,您可以接受,这就是论坛的运作方式,如果您不这样做,有相同问题的人将不会看到解决方案,因为帖子会出现作为“未解决”
-
我理解我的错误: 1. 构造函数被排除在外。 2.使用参数名称。不要重命名。
标签: java javafx lambda expression eventhandler