ArrayList<> vs ArrayList<Integer>

2022-09-02 20:01:09

ArrayList 的以下两个声明有什么区别?

ArrayList<Integer> nunbers = new ArrayList<Integer>();

ArrayList<Integer> nunbers = new ArrayList<>();

其中一个是否比另一个更可取?


答案 1

第二个推断出其类型参数,这在Java 7中是一个新事物。 被称为“钻石”。<>

另请注意,类型推断本身在 Java 中并不新鲜,但是为正在实例化的泛型类推断它的能力是新的。

Java SE 7 之前的发行版的编译器能够推断出泛型构造函数的实际类型参数,类似于泛型方法。但是,如果您使用菱形 (<>),Java SE 7 及更高版本中的编译器可以推断出要实例化的泛型类的实际类型参数。

我想说的是,只要你能确保代码只需要在Java 7上运行,第二个可能是首选,因为它更清晰,并且只会减少冗余信息。


答案 2

第二个减少了代码混乱,它是java 7中的新功能。但是你的代码应该是

List<Integer> nunbers = new ArrayList<>();

由于你可以编码到接口,所以可以推断出实现的类型参数。ListArrayList


推荐