有人可以向我解释以下代码。因为“List”和“ArrayList”的原因是什么 不一样?这是否意味着变量neighborColumns是一个包含类型Column对象的List数据结构,但只有类List中的公共方法可以用于变量neighborColumns?提前谢谢。
List<Column> neighborColumns = new ArrayList<Column>();
答案 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
是实现该接口的特定类。
在可能的情况下,针对接口而不是特定类进行编程是一种很好的编程习惯,因为它可以更容易地在以后更改为使用不同的列表实现。