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

时间:2012-12-30 19:26:28

标签: java arrays arraylist

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

修改

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

来自类Arrays的

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);