仅允许最后一个参数为可变长度:
String prepareStatement(String[] columnNames, String... values)
String …等于String [],因此在这种情况下,您可以为第一个参数插入String [],然后检查它是否为空或有多长。
编辑到您的编辑
如果您确实需要所有字符串作为参数的输入,我建议定义一个真正不常见的字符串来分隔您的输入:
static String prepareStatement(String... params){ String ret = ""; boolean valueInput = false; for(String s : params) { if(s.equals("MyReallyUncommonSeperateString")) { valueInput = true; ret+="nvaluesn";//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"));输出:
abcdevaluesfghijk
另一种方法是也将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+="nvaluesn";//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"));
和相同的输出:
abcdevaluesfghijk



