只有最後一個參數是允許爲可變長度:
String prepareStatement(String[] columnNames, String... values)
串...則爲string []所以在這種情況下,你可以插入一個String []的第一個參數,只是檢查如果它是空的或多長時間。
編輯您的編輯
如果你真的需要爲所有的字符串作爲參數輸入,我會建議定義一個真的很罕見的字符串到單獨的輸入:
static String prepareStatement(String... params)
{
String ret = "";
boolean valueInput = false;
for(String s : params)
{
if(s.equals("MyReallyUncommonSeperateString"))
{
valueInput = true;
ret+="\nvalues\n";//visual delimiter of columnNames and Values
}
else if(valueInput)
{
//handling of your value inputs
ret+=s; //example handling, concatenate everything
}
else
{
//handling of your columnnames
ret+=s; //example handling, concatenate everything
}
}
return ret;
}
你可以叫它:
System.out.println(prepareStatement("a","b","c","d","e","MyReallyUncommonSeperateString","f","g","h","i","j","k"));
輸出:
abcde
values
fghijk
另一種方法是,得到COLUMNNAMES作爲參數的長度,以及:
static String prepareStatement(int length, String... params)
{
String ret = "";
for(int i = 0; i < length; i++){
//handling of columnnames
String colName = params[i];
//do something with colName
ret+=colName; //example handling, concatenate everything
}
ret+="\nvalues\n";//visual delimiter of columnNames ans Values
for(int i = length; i < params.length; i++){
String value = params[i];
//do something with values
ret+=value; //example handling, concatenate everything
}
return ret;
}
在呼叫進行:
System.out.println(prepareStatement(5, "a","b","c","d","e","f","g","h","i","j","k"));
和相同的輸出:
abcde
values
fghijk
看看這個:http://stackoverflow.com/questions/2161912/why-varargs-should-be-the-last-in-method-signature –