先来看一个例子
Rdis key 动态参数拼接的例子
public class RedisKeyUtil {
/**
* 默认value[0]带”_"后缀
* @param values
* @return
*/
public static String getKey(String ...values){
//values[0]带“_”的后缀
if(values == null || values.length == 0){
return null;
}
StringBuilder key = new StringBuilder();
key = key.append(values[0]);
for(int i = 1;i < values.length;i++){
key=key.append("_").append(values[i]);
}
return key.toString();
}
}
从上面可以看出,如果一个方法的参数定为不定参数的话,这个参数可以根据参数个数动态生成一个数组,然后传入方法执行。
不过,不定参数有两个规定:
- 第一,方法的参数列表中最多只有一个不定长度的参数;
- 第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。
对于第一个规定,是因为如果有多于一个不定长度的参数,当真正调用这个方法的时候,JVM、将不知道前面的不定长度参数有多长, 下一个参数是从哪里开始.
对于第二个参数也是一样,编译器不知道不定长度参数的长度,无法确定从哪里开始下一个参数。
重载时还有注意事项,可以参看这里:Java不定参数