繁体   English   中英

传递清单 <String> to String ...参数

[英]Passing List<String> to String… parameter

我正在努力将一个字符串List传递给一个需要参数“ String ... ”的方法。

有人可以帮帮我吗?

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

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

您必须将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[] )。 您必须将List转换为Array然后传递它。

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

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

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

由于您稍后将参数解析为List,我建议将方法更改为:

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

避免额外的费用。

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

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

正如Glorfindel在他的回答中所建议的,因为这三个点意味着你可以使用许多字符串或字符串数​​组来调用该方法(有关更多详细信息,请参阅此文章 )。

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()]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM