This question already has answers here:
How to pass an ArrayList to a varargs method parameter?

(5个答案)


5年前关闭。




假定具有以下签名的方法:
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>arrayList中,其中包含“第一”,“第二”和“第三”。

我想调用foo,以便将moreArgs[0] == "first"作为参数使用moreArgs[1] == "second"moreArgs[2] == "third"arrayList

我的天真尝试是...
ClassName.foo("something", "something", arrayList);

...但是那会给我moreArgs[0] == arrayList,这不是我想要的。

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

请注意,在这种特定情况下,arrayList中的参数数目恰好是三个,但是我正在寻找的解决方案显然应该是通用的,并且可以用于arrayList中的任何数目的参数。

最佳答案

将您的ArrayList转换为类型为Array的对象。

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

08-05 16:58