这是宣告arraylist的最佳方式

时间:2013-12-04 17:10:16

标签: java list collections arraylist

这是一种声明arraylist的两种方式

1. List<String> l1 = new ArrayList<String>();
2. ArrayList<String> l2 = new ArrayList<String>();

我的问题是这两个宣言之间的区别。

这是宣布一个arraylist的最好方法吗?

2 个答案:

答案 0 :(得分:1)

主要区别在于,第一种是说l1的类型是接口List<T>,而在第二种情况下,l2的类型是具体实现(List<T>ArrayList<T>

我会使用第一种形式:

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

使用接口键入,以便您以后可以轻松切换实现。第二个实现与ArrayList的{​​{1}}实现紧密结合。因此,如果您想稍后更改实现(比如说List),您将需要进行大量重构(更改方法签名等)。但是,如果您使用第一种方法,则可以简单地交换实现,而无需进行任何额外的重构。

使用该界面还会强制您针对接口的合同进行编码,而不是任何特定的具体实现。

答案 1 :(得分:0)

使用第一种方法,因为它允许您稍后将List引用重新分配给不同的子类。

顺便说一句,我从来没有见过任何人使用第二种方法。