我在FXML文件中定义了一个GUI,并在相应的控制器中包含以下代码:
@FXML
private TableColumn<Abnormality, String> abnormalityTableViewStatusTableColumn;
稍后在initialize()
方法中我有:
abnormalityTableViewStatusTableColumn.setCellFactory(
ComboBoxTableCell.<Abnormality, String> forTableColumn("Option1", "Option2", "Option3"));
(API TableColumn - method setCellFactory和API ComboBoxTableCell - method forTableColumn)
但编译器也会接受
abnormalityTableViewStatusTableColumn.setCellFactory(
ComboBoxTableCell.forTableColumn("Option1", "Option2", "Option3"));
没有通用括号。
编译器是否会在第二种情况下自动解析类型?
感谢您的帮助!
答案 0 :(得分:2)
是; Java 8在类型推断中包含了对先前版本的一些改进。在Java 8中,编译器能够从上下文(您将forTableColumn
的结果传递给期望Callback<TableColumn<Abnormality, String>, TableCell<Abnormality, String>>
的方法)推断出泛型方法的类型为<Abnormality, String>
。因为编译器可以进行此推断,所以不需要显式提供类型。