Java 中的 List 或 ArrayList 声明有什么区别?

2022-09-03 02:10:50

我是Java的新手。我想知道两者之间的区别:

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

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

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

谢谢


答案 1

第一个仅在 Java 7 之后有效,并且等效于

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

它只是不那么冗长。

与第三个相同,相当于

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

因此严格等同于第二个。

您应该更喜欢第一个,原因在以下问题的答案中提到:列表与ArrayList作为引用类型?


答案 2

这三者在某种程度上是等效的:

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

在上面,您将声明一个变量,该变量实现将包含元素的接口,并使用具体类实例化它。另外,您正在使用Java 7的新菱形语法,儿子您不必在.ListStringArrayListString<>

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

在上面,您将声明将包含元素的具体类的变量,并使用“传统”语法将其与具体类实例化,该语法要求您指定 .ArrayListStringArrayListString<>

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

在上面,您将声明将包含元素的具体类的变量,并使用具体类实例化它。另外,您正在使用Java 7的新菱形语法,儿子您不必在.ArrayListStringArrayListString<>

请注意,菱形语法 () 仅适用于 Java 7 及更高版本,对于以前版本的 Java,您只能使用传统语法 () 来实例化泛型。<><the-type>

最后两种形式是完全等价的;第一种形式有点不同,因为你指定的变量是类型而不是类型 - 这是首选的形式,因为良好的面向对象实践规定你应该编程到一个“接口”,而不是一个“实现”。listListArrayList