有人能给我解释一下下面的代码吗?为什么"List“和"ArrayList”不一样?这是否意味着变量neighborColumns是一个保存类型列对象的列表数据结构,但在变量neighborColumns上只能使用来自类List的公共方法?提前谢谢。
List<Column> neighborColumns = new ArrayList<Column>();发布于 2012-10-06 14:19:30
这段代码是ok的(设计到接口(列表):-
List<Column> neighborColumns = new ArrayList<Column>();
List<Column> neighborColumns = new LinkedList<Column>(); // OK To change..在上面的代码中,您基本上是在设计一个接口,而不是implementation..List是一个接口,而ArrayList是一个实现它的具体类。
一个优点是,您可以在不同的实现之间切换,而无需更改设计。
以下代码是一个问题(设计到实现(ArrayList):
ArrayList<Column> neighborColumns = new ArrayList<Column>();
//OOPs.. Cry (Incompatible Types)
ArrayList<Column> neighborColumns = new LinkedList<Column>(); 在这里,由于您正在设计一个实现..因此,您不能更改RHS上的实现。编译器将如上所述地呼叫..
因此,通常情况下,您应该始终设计一个接口,这样就不会暴露实现,还可以获得随时更改实现的灵活性。
发布于 2012-10-06 14:17:31
List是一个接口,而ArrayList是实现该接口的特定类。
在可能的情况下,针对接口而不是特定的类进行编程是一种很好的编程实践,因为这样可以更容易地在以后更改为使用不同的列表实现。
https://stackoverflow.com/questions/12757285
复制相似问题