【问题标题】:Type inside angle brackets - what does it mean? [duplicate]在尖括号内输入 - 这是什么意思? [复制]
【发布时间】:2018-11-15 14:28:17
【问题描述】:

在编写其他人的代码时,我发现了一些奇怪的结构,我在互联网上找不到任何解释。这是 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);

&lt;MovieRecController&gt; 到底是什么意思?它看起来像类型转换,但在这种转换构造之前我从未见过,我可以找到任何解释。

【问题讨论】:

    标签: java


    【解决方案1】:

    它被称为type witness

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2021-11-26
      • 1970-01-01
      • 2018-07-15
      相关资源
      最近更新 更多