arraylist的以下两个声明有什么区别?
ArrayList<Integer> nunbers = new ArrayList<Integer>();
与
ArrayList<Integer> nunbers = new ArrayList<>();
他们中的一个比另一个更受欢迎吗?
mkshixfv1#
它们将编译成完全相同的代码,因为Java7第二件事只是您可以使用的一个快捷方式,因为它100%清楚什么属于 <> 你可以让它空着
<>
rsl1atfo2#
第二种方法减少了代码混乱,这在Java7中是新的。但你的密码应该是
List<Integer> nunbers = new ArrayList<>();
因为你可以对接口进行编码 List ,键入实现的param ArrayList 是推断出来的。
List
ArrayList
kpbwa7wx3#
最后一个是可以与java版本7或更新版本一起使用的快捷方式。
8ljdwjyq4#
如果java编译器的版本低于1.7,则第二个版本将无法编译。
6ojccjat5#
第二个是推断出它的类型参数,这在Java7中是一个新事物。 <> 被称为“钻石”。还要注意,类型推断本身在java中并不是新的,但是为被示例化的泛型类推断它的能力是新的。JavaSE7之前版本的编译器能够推断泛型构造函数的实际类型参数,类似于泛型方法。但是,如果使用diamond(<>),JavaSE7和更高版本中的编译器可以推断被示例化的泛型类的实际类型参数。我想说,第二种可能是首选的,只要您能够确保代码只需要在Java7上运行,因为它更清晰,并且只减少了冗余信息。
5条答案
按热度按时间mkshixfv1#
它们将编译成完全相同的代码,因为Java7第二件事只是您可以使用的一个快捷方式,因为它100%清楚什么属于
<>
你可以让它空着rsl1atfo2#
第二种方法减少了代码混乱,这在Java7中是新的。但你的密码应该是
因为你可以对接口进行编码
List
,键入实现的paramArrayList
是推断出来的。kpbwa7wx3#
最后一个是可以与java版本7或更新版本一起使用的快捷方式。
8ljdwjyq4#
如果java编译器的版本低于1.7,则第二个版本将无法编译。
6ojccjat5#
第二个是推断出它的类型参数,这在Java7中是一个新事物。
<>
被称为“钻石”。还要注意,类型推断本身在java中并不是新的,但是为被示例化的泛型类推断它的能力是新的。
JavaSE7之前版本的编译器能够推断泛型构造函数的实际类型参数,类似于泛型方法。但是,如果使用diamond(<>),JavaSE7和更高版本中的编译器可以推断被示例化的泛型类的实际类型参数。
我想说,第二种可能是首选的,只要您能够确保代码只需要在Java7上运行,因为它更清晰,并且只减少了冗余信息。