如何将List转换为变量参数参数java

jav*_*eek 54 java list variadic-functions

我有一个方法,它采用可变长度字符串(String ...)作为参数.我List<String>和我在一起.我如何将此作为参数传递给方法?

小智 61

String...等于a String[] 所以只需将你转换list为a String[],你应该没事.

  • OP的附加说明:如果你有一个采用Object ...的方法,这个方案将不起作用,因为String []将被理解为一个Object. (14认同)

Alp*_*iya 35

String ...和String []是相同的如果将列表转换为数组.

运用

Foo[] array = list.toArray(new Foo[list.size()]);
Run Code Online (Sandbox Code Playgroud)

要么

Foo[] array = new Foo[list.size()];
list.toArray(array);
Run Code Online (Sandbox Code Playgroud)

然后使用该数组作为String ...函数的参数.

  • 这也有效:`list.toArray(new Foo [] {})`; 如果您不想将列表存储在其他变量中,则非常有用. (6认同)

Sea*_*ene 13

你可以stream在java 8中使用.

String[] array = list.stream().toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)

然后可以在该...args位置使用该阵列.