为什么没有 ArrayList(T[] t) 构造函数?

2022-09-03 01:54:00

以这种方式按对象数组初始化列表是很常见的:

Foo[] objs = ...;
ArrayList<Foo> list = new ArrayList<Foo>(Arrays.asList(objs));

我想知道,是否有任何原因为什么ArrayList的desiners没有包含带有数组作为参数的构造函数,以便它可以像这样初始化:

ArrayList<Foo> list = new ArrayList<Foo>(objs);

可能是它违反了某些原则,线程安全或其他内容?


答案 1

我不知道为什么它不在标准库中,但是GuavaLists类甚至有助于类型推断:newArrayList

ArrayList<Foo> list = Lists.newArrayList(objs);

(如果您经常使用它,则可能需要静态导入。Lists.newArrayList


答案 2

您可以使用Google Guava Library(又名Google Collections)来实现以下目的:

String[] ary = {"a", "b"};
List<String> l = Lists.newArrayList(ary);

http://code.google.com/p/guava-libraries/