java - 在尖括号内输入 - 这是什么意思?
问题描述
在处理其他人的代码时,我发现了一些奇怪的结构,我在互联网上找不到任何解释。这是 JavaFXML 应用程序的整个方法:
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);
究竟是什么意思<MovieRecController>
?它看起来像类型转换,但在这种转换构造之前我从未见过面,我可以找到任何解释。
解决方案
它被称为类型见证:
泛型方法 addBox 定义了一个名为 的类型参数
U
。通常,Java 编译器可以推断泛型方法调用的类型参数。因此,在大多数情况下,您不必指定它们。例如,要调用泛型方法addBox
,您可以使用类型见证指定类型参数,如下所示:BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);
或者,如果省略类型见证,Java 编译器会自动推断(从方法的参数)类型参数是 Integer:
BoxDemo.addBox(Integer.valueOf(20), listOfIntegerBoxes);
推荐阅读
- react-native - 如何在本机反应中将状态传递给静态导航?
- php - Codeigniter zip 库致命错误:当我下载超过 500 mb 的文件时内存不足
- django - boto3 和 dropzone.js 的 S3 图像上传错误
- java - Java中的布局问题
- angular - 检查登录方法的承诺不会将承诺返回给 canActivate()
- sharepoint - azure adal 无法在 sharepoint 文档库中上传文件
- javascript - 为什么不通过 jquery 将布尔值分配给下拉列表?
- python - django:当 2 个字段具有相同值时过滤查询集
- angular - 我如何在打字稿中为 Angular 5 设置 zindex
- angular - 我什么时候应该在 Angular 2+ 中使用 TS 导入类型?