查看JavaFX中的一个开源项目,我发现了以下几行:

@FXML
private TreeTableColumn<Person, String> firstNameColumn;
@FXML
private TreeTableColumn<Person, String> lastNameColumn;
@FXML
private void initialize() {
    // Initialize the person table with the two columns.
    firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
    lastNameColumn.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty());
 }


我以前从未见过“->”运算符。它是什么?

setCellvalueFactory的签名为:

setCellValueFactory(Callback< TreeTableColumn.CellDataFeatures< S,T>,
                    ObservableValue< T>> value)

最佳答案

您代码中的箭头标记是lambda expression的一部分。有人说这是Java 8附带的最大功能。

一个示例用例是提高代码的可读性。代替匿名类

btn.setOnAction(new EventHandler<ActionEvent>() {

    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello World!");
    }
});


您可以编写与lambda表达式相同的代码:

btn.setOnAction(
    event -> System.out.println("Hello World!")
);

10-08 19:10