我知道从Java7开始,在实例化期间在构造函数中重复泛型类的类型是一种冗余。但是钻石运营商<>呢,是否可以选择重复呢?换句话说,我想知道这两者之间的区别:
List<String> Fruits = new ArrayList<>();还有这个
List<String> Fruits = new ArrayList(); 或者这个
Map<Integer, String> students = new HashMap<>();还有这个
Map<Integer, String> students = new HashMap();提前谢谢你
发布于 2014-04-03 07:11:09
是的,这是有区别的。菱形运算符只是指定整个泛型类型的快捷方式,因为它是可以推断的。这些是等效的:
List<String> Fruits = new ArrayList<>();和
List<String> Fruits = new ArrayList<String>();但是,由于根本没有尖括号,这意味着您使用的是原始类型,这与在类上使用泛型不同。这会生成一个未检查的分配警告,应该避免这种情况。
List<String> Fruits = new ArrayList(); // warning!https://stackoverflow.com/questions/22824845
复制相似问题