Java/JavaFX 中的 -> 运算符是什么?
What is -> operator in Java/JavaFX?
查看 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.
附带的最大功能
一个示例用例是提高代码可读性。而不是匿名 class
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!")
);
即使您没有使用 Java8 IntelliJ IDE 也会使用此标记来缩短您的方法。
查看 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.
附带的最大功能一个示例用例是提高代码可读性。而不是匿名 class
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!")
);
即使您没有使用 Java8 IntelliJ IDE 也会使用此标记来缩短您的方法。