首页 > 解决方案 > 在尖括号内输入 - 这是什么意思?

问题描述

在处理其他人的代码时,我发现了一些奇怪的结构,我在互联网上找不到任何解释。这是 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>?它看起来像类型转换,但在这种转换构造之前我从未见过面,我可以找到任何解释。

标签: java

解决方案


它被称为类型见证

泛型方法 addBox 定义了一个名为 的类型参数U。通常,Java 编译器可以推断泛型方法调用的类型参数。因此,在大多数情况下,您不必指定它们。例如,要调用泛型方法addBox,您可以使用类型见证指定类型参数,如下所示:

BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);

或者,如果省略类型见证,Java 编译器会自动推断(从方法的参数)类型参数是 Integer:

BoxDemo.addBox(Integer.valueOf(20), listOfIntegerBoxes);

推荐阅读