我在一些与JavaFX相关的代码中看到了一种新的类型转换形式。奇怪的是它的功能类似于类型转换,但我找不到它under the categories of casting in Java 8 Specifications。这是一个例子:
FXMLLoader loader = new FXMLLoader(getClass().getResource("tabs/tabbedWin.fxml"));
TabbedWinController twc1 = loader.<TabbedWinController>getController();
TabbedWinController twc2 = (TabbedWinController) loader.getController();
最后两行看起来做同样的工作,但我想知道twc1
前面的语法是什么意思?这对我来说是全新的。
如果是类型转换,为什么我不能使用像int i = <Integer> f;
这样的语句,其中f是一个浮点变量?
所以我很想知道它是什么?从什么时候添加到Java?我应该/可以/不应该使用它?
答案 0 :(得分:1)
它与JavaFX无关,该形式的方法称为泛型方法,与投射无关。
所以当你写
loader.<TabbedWinController>getController();
这意味着您希望getController()
返回TabbedWinController
类型的对象。
答案 1 :(得分:1)
这是您为static
方法指定泛型类型的方式。自从泛型在Java 5中发布以来,它就已经可用了。
List<String> emptyListOfStrings = Collections.<String> emptyList();
在您的情况下,两个表单都可以正常工作,因为getController
方法返回指定泛型类型的对象。
请参阅here进行讨论。