2015-10-06 5 views
1

я определил GUI в файле FXML и имеют следующий код в соответствующем контроллере:Общие статические методы без скобок, например. в JavaFX 8

@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")); 

без общих скобок.

Выполняет ли компилятор автоматически разрешение типов во втором случае?

Благодарим за помощь!

ответ

2

Да; Java 8 содержит некоторые улучшения по сравнению с предыдущими версиями при вводе типов. В Java 8 компилятор может вывести из контекста (вы передаете результат forTableColumn в метод, ожидающий Callback<TableColumn<Abnormality, String>, TableCell<Abnormality, String>>), что тип для общего метода - <Abnormality, String>. Поскольку компилятор может сделать этот вывод, явное предоставление типов не требуется.