首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java List和ArrayList声明

Java List和ArrayList声明
EN

Stack Overflow用户
提问于 2012-10-06 14:16:07
回答 2查看 1K关注 0票数 1

有人能给我解释一下下面的代码吗?为什么"List“和"ArrayList”不一样?这是否意味着变量neighborColumns是一个保存类型列对象的列表数据结构,但在变量neighborColumns上只能使用来自类List的公共方法?提前谢谢。

代码语言:javascript
复制
List<Column> neighborColumns = new ArrayList<Column>();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-06 14:19:30

这段代码是ok的(设计到接口(列表):-

代码语言:javascript
复制
List<Column> neighborColumns = new ArrayList<Column>();
List<Column> neighborColumns = new LinkedList<Column>();   // OK To change..

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

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

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

代码语言:javascript
复制
ArrayList<Column> neighborColumns = new ArrayList<Column>();

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

在这里,由于您正在设计一个实现..因此,您不能更改RHS上的实现。编译器将如上所述地呼叫..

因此,通常情况下,您应该始终设计一个接口,这样就不会暴露实现,还可以获得随时更改实现的灵活性。

票数 3
EN

Stack Overflow用户

发布于 2012-10-06 14:17:31

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12757285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档