Chỉ Parameter cuối cùng được phép có biến Length:
String prepareStatement(String[] columnNames, String... values)
Chuỗi ... được bằng String [] như vậy trong trường hợp này bạn có thể chèn một String [] cho tham số đầu tiên và chỉ cần kiểm tra nếu nó trống rỗng hoặc trong bao lâu.
Edit để chỉnh sửa của bạn
Nếu bạn thực sự cần một đầu vào cho tất cả các Strings của bạn như thông số Tôi muốn giới thiệu để xác định một chuỗi thực sự rất phổ biến để tách đầu vào của bạn:
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;
}
Bạn có thể gọi nó là:
System.out.println(prepareStatement("a","b","c","d","e","MyReallyUncommonSeperateString","f","g","h","i","j","k"));
Output:
abcde
values
fghijk
Một cách khác là để cho độ dài của COLUMNNAMES như tham số cũng như:
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;
}
Với cuộc gọi:
System.out.println(prepareStatement(5, "a","b","c","d","e","f","g","h","i","j","k"));
Và cùng đầu ra:
abcde
values
fghijk
Kiểm tra điều này: http://stackoverflow.com/questions/2161912/why-varargs-should-be-the-last-in-method-signature –