Java 不定长参数

先来看一个例子

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不定参数

猜你喜欢

转载自my.oschina.net/zjllovecode/blog/1816234
今日推荐