List arrayList = new ArrayList();
List linkedList = new LinkedList();
arrayList = linkedList;
arrayList
是ArrayList
的一个实例。 linkedList
是LinkedList
的一个实例。因此,如果将linkedList
分配给arrayList
,它应该会出错,但为什么不呢?
答案 0 :(得分:1)
arrayList
是变量。它被声明为List
类型的变量,这意味着它可以成为对实现List
的任何类型的任何对象的引用。分配给它的第一件事是ArrayList
,这并不重要;您可以稍后重新分配任何其他对象引用,只要它实现List
。
有助于保持术语的正确性。您的问题似乎是讨论将一个对象分配给另一个对象,或者将一个列表分配给另一个列表,但是& #39;不是发生了什么。您将对象(实际上是对象的引用)分配给变量。当您为变量赋值时,先前在变量中的值对赋值没有影响。
答案 1 :(得分:0)
ArrayList是List类型对象,LinkedList也是List类型对象(继承)。这就是为什么将一个分配到另一个工作没有问题。
更具体地说,List是一个接口,由AbstractList类型对象实现,而AbstractList类型对象又是ArrayLists的基础。
您可以在黑线后看到here。