虽然确实可以编译,但我无法理解以下语句:
List<Integer> l = Collections.<Integer>singletonList(5);
第二<Integer>
,说如何<Integer>
在方法名称前加一个?我怀疑这是泛型的声明,但在任何地方都找不到。但我只知道定义,例如List<Integer>
,把<Integer>
后面的泛型类型。有人可以给我指出该语法的教程吗,还是可以找到重复的问题(对不起,我在快速搜索中没有找到问题)?
非常感谢!
这称为类型见证,在类型推断路径中被引用:
通用方法
addBox
定义了一个名为U的类型参数。通常,Java编译器可以推断出通用方法调用的类型参数。因此,在大多数情况下,您不必指定它们。例如,要调用泛型方法addBox
,可以使用类型见证人指定type参数,如下所示:BoxDemo.<Integer>addBox(Integer.valueOf(10), listOfIntegerBoxes);
实际上,类型见证人可以让开发人员介入以解决类型引擎无法正确推断值将导致哪种类型的情况。您会在Java 7中更普遍地使用它,而Java 8则得到了改进它的类型推断能力。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句