Java 列表LinkedList ArrayList
Java 列表LinkedList ArrayList,java,list,arraylist,linked-list,Java,List,Arraylist,Linked List,arrayList是arrayList的一个实例linkedList是linkedList的一个实例。因此,如果将linkedList分配给arrayList,它应该会出错,但为什么不会呢?arrayList是列表类型对象,linkedList也是列表类型对象(继承)。这就是为什么将一个任务分配给另一个任务没有问题 更具体地说,List是一个接口,由AbstractList类型的对象实现,而AbstractList类型的对象又是ArrayList的基础 您可以看到,在黑线后面。arrayList
arrayList
是arrayList
的一个实例linkedList
是linkedList
的一个实例。因此,如果将linkedList
分配给arrayList
,它应该会出错,但为什么不会呢?arrayList是列表类型对象,linkedList也是列表类型对象(继承)。这就是为什么将一个任务分配给另一个任务没有问题
更具体地说,List是一个接口,由AbstractList类型的对象实现,而AbstractList类型的对象又是ArrayList的基础
您可以看到,在黑线后面。arrayList是一个变量。它被声明为
List
类型的变量,这意味着它可以成为对实现List
的任何类型的任何对象的引用。您首先分配给它的是ArrayList
,这并不重要;您可以在以后将任何其他对象引用重新指定给它,只要它实现了List
这有助于保持术语的直截了当。您的问题似乎是将一个对象分配给另一个对象,或将一个列表分配给另一个列表,但实际情况并非如此。将对象(实际上是对象的引用)指定给变量。当您为变量赋值时,先前在变量中的值对赋值没有影响。这两个变量的引用类型都是列表。这样做很好。@AlexQuilliam不确定从哪里获得
Integer
。@AlexQuilliam不,你不会的。你有没有试过OP发布的代码?是的。没有编译时或运行时错误。我正在执行ArrayList ArrayList
。这就是为什么会有例外。
List arrayList = new ArrayList();
List linkedList = new LinkedList();
arrayList = linkedList;