做就是了:
new SequenceEntityModifier(arr.toArray(new IEntityModifier[arr.size()]));
它将复制
ArrayList到给定的数组并返回它。所有vararg函数也可以为该参数采用数组,因此适用于:
public void doSomething(Object... objs)
所有合法电话为:
doSomething(); // Empty arraydoSomething(obj1); // One elementdoSomething(obj1, obj2); // Two elementsdoSomething(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(的默认
toString结果
int[])。这是因为它最终将创建
Object[]一个元素,这是我们的
int[],例如:
// Basically what the pre above was doingObject[] objs = new Object[] { intArray };这同样适用于
double[],
char[]和其他原始数组类型。请注意,只需将类型更改为
intArray即可解决此问题
Integer[]。如果您正在使用现有数组,这可能并不简单,因为您不能
int[]直接将an转换为。
Integer[],我特别喜欢Apache
Commons Lang的
ArrayUtils.toObject方法)。



