没有括号的通用静态方法,例如在JavaFX 8中

时间:2015-10-06 11:59:25

标签: java javafx

我在FXML文件中定义了一个GUI,并在相应的控制器中包含以下代码:

@FXML
private TableColumn<Abnormality, String> abnormalityTableViewStatusTableColumn;

稍后在initialize()方法中我有:

abnormalityTableViewStatusTableColumn.setCellFactory(
            ComboBoxTableCell.<Abnormality, String> forTableColumn("Option1", "Option2", "Option3"));

API TableColumn - method setCellFactoryAPI ComboBoxTableCell - method forTableColumn

但编译器也会接受

abnormalityTableViewStatusTableColumn.setCellFactory(
            ComboBoxTableCell.forTableColumn("Option1", "Option2", "Option3"));

没有通用括号。

编译器是否会在第二种情况下自动解析类型?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

是; Java 8在类型推断中包含了对先前版本的一些改进。在Java 8中,编译器能够从上下文(您将forTableColumn的结果传递给期望Callback<TableColumn<Abnormality, String>, TableCell<Abnormality, String>>的方法)推断出泛型方法的类型为<Abnormality, String> 。因为编译器可以进行此推断,所以不需要显式提供类型。