如何将ArrayList传递给期望vararg(Object ...)的方法?

时间:2011-01-15 21:57:29

标签: java

假设具有以下签名的方法:

public static void foo(String arg1, String args2, Object... moreArgs);

跑步时......

ClassName.foo("something", "something", "first", "second", "third");

...我会得到moreArgs[0] == "first"moreArgs[1] == "second"moreArgs[2] == "third"

但假设我将参数存储在名为ArrayList<String>的{​​{1}}中,其中包含“first”,“second”和“third”。

我想使用arrayList作为参数调用foomoreArgs[0] == "first"moreArgs[1] == "second"moreArgs[2] == "third"

我天真的尝试是......

arrayList

...但这会给我ClassName.foo("something", "something", arrayList); 这不是我想要的。

moreArgs[0] == arrayList传递给上述arrayList方法的正确方法是什么,以便foomoreArgs[0] == "first"moreArgs[1] == "second"

请注意moreArgs[2] == "third"中的参数个数在这个特定情况下恰好是三个,但我正在寻找的解决方案显然应该是通用的,并且适用于arrayList中的任意数量的参数。

2 个答案:

答案 0 :(得分:22)

将ArrayList转换为类型为object的数组。

ClassName.foo("something", "something", arrayList.toArray());

答案 1 :(得分:-1)

你传递的只是你的期望。但是只有一件事,它是对ArrayList的引用。

然后你必须将你的东西从阵列列表中移开。