首页 > 解决方案 > 集合声明的差异

问题描述

以下几行之间有什么区别:

ArrayList list = new ArrayList();
ArrayList<String> list = new ArrayList();
ArrayList<String> list = new ArrayList<String>();

我刚开始从 HeadFirstJava 书中学习集合和数据结构,我有点困惑,因为我看到人们在研究时使用了上面的所有三个示例。

标签: javaarrayslistdata-structurescollections

解决方案


第一行和第二行使用原始类型。

原始类型是在没有类型参数的情况下使用的类型,即使基类具有类型参数。

原始类型的存在只是为了向后兼容古老的(Java 5 之前的)代码,根本不应该在新代码中使用。关于原始类型的规则很奇怪且不直观。

第三个是正确的,但可以写成这样更短的方式:

ArrayList<String> list = new ArrayList<>();

这会让编译器“猜测”到<>.


推荐阅读