最近我遇到了一个API,它正在使用一些参数
void doSomething(final String... olah) {
}
我从来没有见过这样的东西。
我现在有List<String>
,我想用我的字符串列表调用该函数。我怎样才能做到这一点?
答案 0 :(得分:10)
欢迎使用现代Java。该语法在Java中称为varargs
。
http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
您可以将其视为
void doSomething(final String[] olaf) {
}
唯一的区别是顾名思义,它是可变长度参数。您可以使用0
将其调用到任何数字或参数。因此,doSomething("foo")
,doSomething("foo", "bar")
,doSomething("foo", "bar", "baz")
都受到支持。
为了使用List
参数调用此方法,您必须先将列表转换为String[]
。
这样的事情会:
List<String> myList; // Hope you're acquainted with generics?
doSomething(myList.toArray(new String[myList.size()]));
答案 1 :(得分:3)
String...
只是String[]
。所以只需循环遍历列表并创建一个String数组并传递该数组或更简单的方法来使用Collection类的.toArray(new String[collection.size()])
方法。
答案 2 :(得分:2)
String ...与String []相同。
你想打电话给:
String[] listArr = list.toArray( new String[ list.size() ] );
doSomething( listArr );
答案 3 :(得分:1)
使用.toArray(new String[0])
。 toArray()方法会将您的字符串列表(java.util.List<String>
)转换为String
个对象的数组。
'...'语法是一种允许可变数量参数的机制。您可以传递doSomething("abc", "def", "ghi")
或doSomething("abc")
或doSomething(new String[] { "abc", "def", "ghi" })
之类的内容。该函数将它们全部视为数组(分别为长度3,1和3)。
答案 4 :(得分:1)
请参阅以下内容将String列表转换为String Array
List<String> listOfString = new ArrayList<String>();
listOfString.add("sunil");
listOfString.add("sahoo");
String[] strResult=new String[listOfString.size()];
strResult = listOfString.toArray(strResult);