在处理其他人的代码时,我发现了一些奇怪的构造,对我来说,在互联网上找不到任何解释。这是JavaFXML应用程序中的整个方法:
library(magrittr)
df %>% apply(1, . %>% print(.[1])) # wrong
以下是我不太清楚的那一行:
private void logInUser(User selectedUser) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/movierecsys/gui/view/MovieRecView.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
fxmlLoader.<MovieRecController>getController().setInfo(selectedUser);
Stage stage = (Stage) loginButton.getScene().getWindow();
stage.setScene(new Scene(root1));
stage.show();
}
fxmlLoader.<MovieRecController>getController().setInfo(selectedUser);
到底是什么意思?它看起来像类型转换,但我在进行此转换结构之前从未见过,对此我可以找到任何解释。
答案 0 :(得分:-1)
它称为type witness:
通用方法addBox定义了一个名为
U
的类型参数。通常,Java编译器可以推断通用方法调用的类型参数。因此,在大多数情况下,您不必指定它们。例如,要调用通用方法addBox
,可以使用以下类型见证人指定type参数:BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);
或者,如果您省略类型见证人,则Java编译器会自动(根据方法的参数)推断类型参数为Integer:
BoxDemo.addBox(Integer.valueOf(20), listOfIntegerBoxes);