以下两行之间是否有任何区别
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
谢谢您的回复
以下两行之间是否有任何区别
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
谢谢您的回复
几乎总是第二个比第一个更受欢迎。第二个优点是List
可以更改(LinkedList
例如)的实现,而不会影响其余代码。这将很难做到ArrayList
,不仅因为您需要更改ArrayList
到LinkedList
任何地方,还因为您可能使用了ArrayList
特定的方法。
尽可能将特定实现隐藏在接口后面。看到这个
其次是示例 Program to Interface
及其首选方式。
有关详细信息“编程到接口”是什么意思?
本身没有太大区别,但List
应尽可能使用,因为它是一个接口,您可能会在标准库的方法中看到参数通常是List<K>
,因此可以传递任何特定的实现,例如ArrayList
or LinkedList
。
只要您以后只需要一个List
接口,通常建议使用后者。这就是所谓的“编程接口,而不是实现”。
至于它们之间的详细区别,我在另一个关于stackoverflow的问题中已经回答了:The difference between "C c = new C()" and "A c = new C()" when C is a subclass of A in Java
第二种方法通常是首选方法,因为它将实现隐藏在接口后面。
这意味着稍后,如果需求发生变化并且需要List
接口的另一个实现,您可以只更改一行代码,其他所有内容仍然可以工作,因为您是针对接口而不是类进行编码。