这是一种声明arraylist的两种方式
1. List<String> l1 = new ArrayList<String>();
2. ArrayList<String> l2 = new ArrayList<String>();
我的问题是这两个宣言之间的区别。
这是宣布一个arraylist的最好方法吗?
答案 0 :(得分:1)
主要区别在于,第一种是说l1
的类型是接口List<T>
,而在第二种情况下,l2
的类型是具体实现(List<T>
)ArrayList<T>
。
我会使用第一种形式:
List<String> l1 = new ArrayList<String>();
使用接口键入,以便您以后可以轻松切换实现。第二个实现与ArrayList
的{{1}}实现紧密结合。因此,如果您想稍后更改实现(比如说List
),您将需要进行大量重构(更改方法签名等)。但是,如果您使用第一种方法,则可以简单地交换实现,而无需进行任何额外的重构。
使用该界面还会强制您针对接口的合同进行编码,而不是任何特定的具体实现。
答案 1 :(得分:0)
使用第一种方法,因为它允许您稍后将List
引用重新分配给不同的子类。