相关疑难解决方法(0)

是否可以在Scala中使用Java 8样式方法引用?

我正在Scala中开发JavaFX8应用程序,但我无法弄清楚如何将方法引用传递给事件处理程序.为了澄清,我没有使用ScalaFX库,而是直接在JavaFX上构建我的应用程序.

这是相关的代码段.

InputController.java(我用Java编写了这个测试类,以隔离问题只使用方法引用)

public class InputController {
    public void handleFileSelection(ActionEvent actionEvent){
        //event handling code
    }

    public InputController() {
        //init controller
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作(Java)

InputController inputController = new InputController();
fileButton.setOnAction(inputController::handleFileSelection);
Run Code Online (Sandbox Code Playgroud)

这不起作用(Scala)

val inputController = new InputController
fileButton.setOnAction(inputController::handleFileSelection)
Run Code Online (Sandbox Code Playgroud)

这是编译器的错误消息(Scala 2.11.6).

Error:(125, 45) missing arguments for method handleFileSelection in class Main;
follow this method with '_' if you want to treat it as a partially applied function
    fileButton.setOnAction(inputController::handleFileSelection)
                                            ^
Run Code Online (Sandbox Code Playgroud)

如果我使用Scala 2.12.0-M2,我会收到不同的错误消息.

Error:(125, 45) missing argument list for method handleFileSelection in class Main …
Run Code Online (Sandbox Code Playgroud)

java scala java-8 javafx-8

26
推荐指数
1
解决办法
5904
查看次数

标签 统计

java ×1

java-8 ×1

javafx-8 ×1

scala ×1