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

kno*_*orv 11 java

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

public static void foo(String arg1, String args2, Object... moreArgs);
Run Code Online (Sandbox Code Playgroud)

跑步时......

ClassName.foo("something", "something", "first", "second", "third");
Run Code Online (Sandbox Code Playgroud)

......我会的moreArgs[0] == "first",moreArgs[1] == "second"而且moreArgs[2] == "third".

但是假设我将参数存储在一个包含"first","second"和"third" 的ArrayList<String>被调用arrayList中.

我想打电话foomoreArgs[0] == "first",moreArgs[1] == "second"并且moreArgs[2] == "third"使用arrayList作为参数.

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

ClassName.foo("something", "something", arrayList);
Run Code Online (Sandbox Code Playgroud)

......但这会给我moreArgs[0] == arrayList一些不是我想要的东西.

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

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

hel*_*922 23

将ArrayList转换为类型为object的Array.

ClassName.foo("something", "something", arrayList.toArray());
Run Code Online (Sandbox Code Playgroud)