【问题标题】:List LinkedList ArrayList列出 LinkedList ArrayList
【发布时间】:2017-10-24 04:57:14
【问题描述】:
List arrayList = new ArrayList();
List linkedList = new LinkedList();

arrayList = linkedList;

arrayListArrayList 的一个实例。 linkedListLinkedList 的一个实例。因此,如果将linkedList 分配给arrayList,它应该会出错,但为什么没有呢?

【问题讨论】:

  • 两者的引用类型都是List。这样做完全没问题。
  • @AlexQuilliam 不知道你从哪里得到Integer
  • @AlexQuilliam 不,你不会的。您甚至尝试过OP发布的确切代码吗?我做到了。没有编译时或运行时错误。
  • 我在做ArrayList arrayList。这就是为什么会有例外。

标签: java list arraylist linked-list


【解决方案1】:

arrayList 是一个变量。它被声明为List 类型的变量,这意味着它可以成为对任何实现Listany 类型对象的引用。您分配给它的第一件事是ArrayList 并不重要;只要它实现List,您就可以稍后重新分配任何其他对象引用。

这有助于使您的术语保持直截了当。您的问题似乎是关于将一​​个 object 分配给另一个 object,或将一个 list 分配给另一个 list,但那是不是正在发生的事情。您正在将一个对象(实际上是对一个对象的引用)分配给一个变量。而且当你给变量赋值时,变量中之前的值对赋值没有影响。

【讨论】:

    【解决方案2】:

    ArrayList 是 List 类型的对象,LinkedList 也是 List 类型的对象(继承)。这就是为什么将一个分配给另一个没有问题的原因。

    更具体地说,List 是一个接口,由 AbstractList 类型的对象实现,而这些对象又是 ArrayLists 的基础。

    你可以在黑线之后看到here

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2017-10-20
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      相关资源
      最近更新 更多