6

以下两行之间是否有任何区别

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

谢谢您的回复

4

6 回答 6

4

几乎总是第二个比第一个更受欢迎。第二个优点是List可以更改(LinkedList例如)的实现,而不会影响其余代码。这将很难做到ArrayList,不仅因为您需要更改ArrayListLinkedList任何地方,还因为您可能使用了ArrayList特定的方法。

于 2013-02-20T07:51:40.220 回答
3

尽可能将特定实现隐藏在接口后面。看到这个

于 2013-02-20T07:54:58.300 回答
2

其次是示例 Program to Interface及其首选方式。
有关详细信息“编程到接口”是什么意思?

于 2013-02-20T07:55:46.960 回答
2

本身没有太大区别,但List应尽可能使用,因为它是一个接口,您可能会在标准库的方法中看到参数通常是List<K>,因此可以传递任何特定的实现,例如ArrayListor LinkedList

于 2013-02-20T07:53:05.123 回答
2

只要您以后只需要一个List接口,通常建议使用后者。这就是所谓的“编程接口,而不是实现”。

至于它们之间的详细区别,我在另一个关于stackoverflow的问题中已经回答了:The difference between "C c = new C()" and "A c = new C()" when C is a subclass of A in Java

于 2013-02-20T07:50:31.023 回答
2

第二种方法通常是首选方法,因为它将实现隐藏在接口后面。

这意味着稍后,如果需求发生变化并且需要List接口的另一个实现,您可以只更改一行代码,其他所有内容仍然可以工作,因为您是针对接口而不是类进行编码。

于 2013-02-20T07:50:42.637 回答