【发布时间】:2021-08-20 11:38:16
【问题描述】:
为什么Java接受下面的代码行,而只出现在右边? 标志没有这样的(泛型功能)用途?
List balloons = new ArrayList<>();
到目前为止,我只了解右侧 的用法,如下例所示。 这里Java推断左边的类型,右边不用再指定,直接用即可。
List<String> balloons = new ArrayList<>();
balloons.add("blue");
balloons.add("yellow");
// balloons.add(1); // will not compile as balloons is type safe, demanding String input
System.out.println(balloons.get(0));
System.out.println(balloons.get(1));
// System.out.println(balloons.get(2));
【问题讨论】:
-
这能回答你的问题吗? Diamond operator in raw type context
-
作为一般说明,以防不清楚:永远不要在泛型类型上遗漏
<...>,只需编写List balloons即可为您提供原始类型。这基本上是 Java 5 之前的一种后备模式,甚至比List<Object>更糟糕,你失去了所有类型安全。
标签: java generics diamond-operator