1

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

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

2 回答 2

3

这段代码没问题(设计到接口(列表):-

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

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

一个优点是,您可以在各种实现之间切换,而无需更改设计。

下面的代码是一个问题(设计到实现(ArrayList):-

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

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

在这里,因为您正在设计一个实现..所以您不能更改 RHS 上的实现..编译器会像上面那样哭泣..

因此,一般来说,您应该始终设计一个接口,从而不暴露实现,并且还可以获得随时更改实现的灵活性..

于 2012-10-06T06:19:29.723 回答
1

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

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

于 2012-10-06T06:17:31.163 回答