Java List和ArrayList声明

时间:2012-10-06 06:16:07

标签: java list arraylist

有人可以向我解释以下代码。因为“List”和“ArrayList”的原因是什么 不一样?这是否意味着变量neighborColumns是一个包含类型Column对象的List数据结构,但只有类List中的公共方法可以用于变量neighborColumns?提前谢谢。

List<Column> neighborColumns = new ArrayList<Column>();

2 个答案:

答案 0 :(得分:3)

此代码正常(设计到界面(列表): -

List<Column> neighborColumns = new ArrayList<Column>();
List<Column> neighborColumns = new LinkedList<Column>();   // OK To change..

在上面的代码中,你基本上是设计一个接口而不是实现.List是一个接口,ArrayList是一个实现它的具体类。

一个优点是,您可以在不改变设计的情况下在各种实现之间切换。

下面的代码是一个问题(Design to implementation(ArrayList): -

ArrayList<Column> neighborColumns = new ArrayList<Column>();

//OOPs.. Cry (Incompatible Types)
ArrayList<Column> neighborColumns = new LinkedList<Column>(); 

这里因为你正在设计一个实现..所以你不能改变RHS上的实现..编译器将如上所述哭..

所以,总的来说,你应该总是设计一个接口,这样就不会暴露实现,也可以随时随地改变实现的灵活性。

答案 1 :(得分:1)

List是一个接口,而ArrayList是实现该接口的特定类。

在可能的情况下,针对接口而不是特定类进行编程是一种很好的编程习惯,因为它可以更容易地在以后更改为使用不同的列表实现。