2013-04-26 222 views

回答

23

第二个拥有类型参数inferred,这是Java 7 <>一个新东西叫做“the diamond”。

还要注意的是,type inference itself is not new in Java,但推断它为被实例化的泛型类的能力是新的。

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

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

3

如果你的java编译器的版本低于1.7,第二个将不会编译。

2

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

3

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

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

既然你可以编写到接口List,实施ArrayList的类型参数是推断出来的。

2

他们将编译到完全相同的代码,因为Java 7的第二件事就是你可以使用一个快捷方式,因为它是100%清楚的<>,你可以离开属于什么它空

相关问题