根据:
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#lambda-expressions-in-gui-applications
先前:
btn.setOnAction(new EventHandler() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
现在我们可以:
btn.setOnAction(
event -> System.out.println("Hello World!")
);
现在,我在Scala中尝试使用Java库.
我使用JavaFX(默认情况下包含在Java 1.8 SE中).
尝试:
chart.setOnMouseClicked( (e: MouseEvent) => println("Noice") )
但是,我得到:
Error:(204, 46) type mismatch;
found : javafx.scene.input.MouseEvent => Unit
required: javafx.event.EventHandler[_ >: javafx.scene.input.MouseEvent]
chart.setOnMouseClicked( (e: MouseEvent) => println("Noice") )
^
旧风格工作正常:
chart.setOnMouseClicked( new EventHandler[MouseEvent] {
override def handle(event: MouseEvent): Unit = println("NOT NOICE")
} )
我在IntelliJ中将项目语言级别设置为Java 8,我正在使用Scala 2.11.1和Java版本为1.8.0_05的Java
我在这里缺少什么?或者根本不可能像上面提到的示例一样将lambda表达式从Scala传递给Java?