ArrayList vs ArrayList

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

ArrayList nunbers = new ArrayList(); 

VS

 ArrayList nunbers = new ArrayList(); 

他们中的一个比另一个更受欢迎吗?

第二个推断了它的类型参数,这是Java 7中的新东西。 <>被称为“ 钻石 ”。

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

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

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

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

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

 List nunbers = new ArrayList<>(); 

由于您可以编写接口List ,因此可以推断出实现ArrayList类型param。

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

他们将编译成完全相同的代码,因为Java 7的第二件事只是你可以使用的快捷方式,因为它是100%清楚属于<>你可以留空