我正在努力将字符串列表传递到需要参数"String…"的方法中。
有人能帮我一下吗?// How to put names into dummyMethod?
List<String> names = getNames();
public void dummyMethod(String... parameter) {
mInnerList.addAll(Arrays.asList(parameter));
}
您必须将List<String>
转换为字符串数组,以便在dummyMethod
的'varargs'参数中使用它。您可以使用toArray
与一个额外的数组作为参数。否则,该方法返回一个Object[]
,它将无法编译:
List<String> names = getNames();
dummyMethod(names.toArray(new String[names.size()]));
您可以这样做:
dummyMethod(names.toArray(new String[names.size()])
这将把列表转换为数组
在方法内部传递字符串数组(String[]
)。你必须将List转换为Array,然后传递它。
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()]));
由于稍后将参数解析为List,因此我建议将方法更改为:
public void dummyMethod(List<String> parameter) {
mInnerList.addAll(parameter);
}
以避免额外的费用。
然而,如果你想"按原样"使用这个方法,那么你应该这样调用它:
dummyMethod(names.toArray(new String[names.size()]));
正如格洛芬德尔在他的回答中所暗示的,因为三个点意味着你可以使用多个字符串或字符串数组来调用该方法(更多细节请参阅这篇文章)。
这是一个可变参数,你应该传递数组。数组列表不能工作。您可以在传递给方法之前将此列表转换为数组。
String a = new String[names.size];
list.toArray(a)