繁体   English   中英

ArrayList&lt;&gt; 与 ArrayList<Integer>

[英]ArrayList<> vs ArrayList<Integer>

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

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

对比

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

其中一个比另一个更受欢迎吗?

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

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

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

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

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

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

由于您可以对接口List进行编码,因此推断出实现ArrayList类型参数。

如果您的 java 编译器的版本低于 1.7,则第二个将无法编译。

最后一个是可用于 Java 7 或更高版本的快捷方式。

它们将编译为完全相同的代码,因为 Java 7 第二件事只是您可以使用的快捷方式,因为<>中的内容是 100% 清楚的,您可以将其留空

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM