将List <String>传递给String …参数

我正在努力将一个string列表传递给一个需要参数“ String … ”的方法。

有人可以帮我吗?

// How to put names into dummyMethod? List<String> names = getNames(); 

  public void dummyMethod(String... parameter) { mInnerList.addAll(Arrays.asList(parameter)); } 

Solutions Collecting From Web of "将List <String>传递给String …参数"

你必须将List<String>转换为一个String数组,才能在dummyMethod的'varargs'参数中使用它。 你可以使用toArray和一个额外的数组作为参数。 否则,该方法返回一个Object[] ,它不会编译:

 List<String> names = getNames(); dummyMethod(names.toArray(new String[names.size()])); 

您可以执行以下操作:

 dummyMethod(names.toArray(new String[names.size()]) 

这将把列表转换为数组

传递String数组( String[] )里面的方法。 您将不得不将您的列表转换为数组,然后传递它。

 if (names != null) { dummyMethod(names.toArray(new String[names.size()])); } 

var-arg实际上接受一个数组,你可以像这样使用它:

 dummyMethod(names.toArray(new String[names.size()])); 

这是一个示例代码:

 List<String> names = new ArrayList<>(); names.add("A"); names.add("B"); dummyMethod(names.toArray(new String[names.size()])); 

由于您稍后将参数parsing为List,因此build议将方法更改为:

 public void dummyMethod(List<String> parameter) { mInnerList.addAll(parameter); } 

以避免额外的成本。

但是,如果您想要“按原样”使用此方法,则应该这样调用它:

 dummyMethod(names.toArray(new String[names.size()])); 

正如Glorfindel在他的回答中所build议的那样,因为这三个点意味着你可以使用许多string或者一个string数组来调用这个方法(更多细节见这篇文章 )。

这是可变参数,为此您应该传递数组。 ArrayList将不起作用。 在传递给方法之前,您可以将此列表转换为数组。

 String a = new String[names.size]; list.toArray(a)