做就是了:
new SequenceEntityModifier(arr.toArray(new IEntityModifier[arr.size()]));
这会将 复制ArrayList
到给定的数组并返回它。所有 vararg 函数也可以将数组作为参数,因此:
public void doSomething(Object... objs)
所有的合法电话是:
doSomething(); // Empty array
doSomething(obj1); // One element
doSomething(obj1, obj2); // Two elements
doSomething(new Object[] { obj1, obj2 }); // Two elements, but passed as array
一个警告:
涉及原始数组的 Vararg 调用不会像您期望的那样工作。例如:
public static void doSomething(Object... objs) {
for (Object obj : objs) {
System.out.println(obj);
}
}
public static void main(String[] args) {
int[] intArray = {1, 2, 3};
doSomething(intArray);
}
人们可能希望这会在不同的行上打印1
,2
和, 。3
相反,它会打印类似的东西[I@1242719c
(an 的默认toString
结果int[]
)。这是因为它最终创建了一个Object[]
带有一个元素的元素,即我们的int[]
,例如:
// Basically what the code above was doing
Object[] objs = new Object[] { intArray };
double[]
,char[]
和其他原始数组类型也是如此。请注意,这可以通过将类型更改为intArray
来解决Integer[]
。如果您正在使用现有数组,这可能并不简单,因为您无法将 anint[]
直接转换为 an Integer[]
(请参阅这个问题,我特别喜欢Apache Commons LangArrayUtils.toObject
的方法)。