ArrayList <> vs ArrayList <Integer>

Pal*_*sen 14 java arraylist java-7

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

ArrayList<Integer> nunbers = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

VS

ArrayList<Integer> nunbers = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

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

zw3*_*324 23

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

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

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

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