Arrays.asList
返回一个类型化的列表。但是 List 是一个接口,那么如何实例化呢?如果尝试实例化一个类型化的列表,我会收到一条错误消息,指出这是不可能的。
编辑
没关系,我看到发生了什么,只是被文档迷惑了一会儿。
这是一个Arrays.ArrayList
不应该与 混淆java.util.ArrayList
。它是数组的包装器,这意味着您所做的任何更改都会更改原始数组,并且您无法添加或删除条目。通常它与 ArrayList 结合使用,例如
List<String> words = new ArrayList<>(Arrays.asList("Hello", "There", "World"));
AList
不能被实例化,当然。但是您可以实例化一个实现 List
的类——例如,一个ArrayList
orLinkedList
等。这些类实际上是List
s。返回 a List
(接口类型)的重点是该方法可以返回实现该List
接口的任何对象,您不必担心它究竟是哪种具体类型。
从类数组
public static transient List asList(Object aobj[])
{
return new ArrayList(aobj);
}
因此,当您执行 Arrays.asList(...) 时,您将采用实现 List 的 ArrayList。没有人会知道这一点,除了这个本身。
1 个例子
字符串[] 数组 = 新字符串[] {"一","二","三"}; 列表列表 = Arrays.asList(array);