3

我知道从 Java 7 开始,在实例化期间在构造函数中重复泛型类的类型是一种冗余。但是菱形运算符 <> 怎么样,是否可以重复它?换句话说,我想知道这之间有什么区别:

List<String> Fruits = new ArrayList<>();

和这个

List<String> Fruits = new ArrayList(); 

或这个

 Map<Integer, String> students = new HashMap<>();

和这个

 Map<Integer, String> students = new HashMap();

先感谢您

4

1 回答 1

8

是,有一点不同。菱形运算符只是指定整个泛型类型的快捷方式,因为它可以被推断出来。这些是等价的:

List<String> Fruits = new ArrayList<>();

List<String> Fruits = new ArrayList<String>();

但是,根本没有尖括号,这意味着您使用的是原始类型,这与在类上使用泛型不同。这会产生未经检查的分配警告,应该避免。

List<String> Fruits = new ArrayList();  // warning!
于 2014-04-02T23:11:08.753 回答