Arrays.asList如何返回实例化的List?

Arrays.asList返回一个类型化的List。 但List是一个接口,所以它如何实例化? 如果尝试并实例化一个类型化列表,我会收到一条错误消息,说明它是不可能的。

编辑

没关系我看到发生了什么,只是被文档弄糊涂了一下。

它是一个Arrays.ArrayList ,不应该与java.util.ArrayList混淆。 它是数组的包装器,表示您所做的任何更改,更改原始数组,并且您无法添加或删除条目。 通常它与ArrayList结合使用

  List words = new ArrayList<>(Arrays.asList("Hello", "There", "World")); 

当然, List无法实例化。 但是您可以实例化一个实现 List的类 – 例如, ArrayListLinkedList等。这些类实际上是List 。 返回List (接口类型)的意思是该方法可以返回任何实现List接口的对象,您不应该担心它究竟是哪种具体类型。

从类数组

 public static transient List asList(Object aobj[]) { return new ArrayList(aobj); } 

因此,当您执行Arrays.asList(…)时,您将获取实现List的ArrayList。 没有人会知道,除了这个本身。

  • 1个例子

    String [] array = new String [] {“one”,“two”,“three”}; List list = Arrays.asList(array);