Java对方法参数支持一种写法,叫可变长度参数列表(String…)。
实例如下,请阅读代码以加深入理解:
package tempExample;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
//author @Zohing
public class VarLenParamList {
/**
* 空字符
*/
public static final String BLANK = "";
/**
* 符号(:)
*/
public static final String SIGN_NEGATIVE = ":";
public static boolean isEmpty(Collection<?> collection) {
return collection == null || collection.isEmpty();
}
public static boolean isNotEmpty(Collection<?> collection) {
return !isEmpty(collection);
}
/**
* 如果对象为空,则转换为空
*
* @param str 转换对象
* @return 处理结果
*/
public static String nullToEmpty(String str) {
if (str == null) {
return BLANK;
}
return str;
}
/**
* 收集字符串
*
* @param concatMark 连接符号
* @param strArray 可变长度参数列表(String...)
* @return 字符串
*/
public static String concatStringWithSeparate(String concatMark, String... strArray) {
return concatStringWithSeparate(concatMark, Arrays.asList(strArray));
}
/**
* 收集字符串
*
* @param concatMark 连接符号
* @param strList 字符串列表
* @return 字符串
*/
public static String concatStringWithSeparate(String concatMark, List<String> strList) {
StringBuilder sb = new StringBuilder();
concatMark = nullToEmpty(concatMark);
if (isNotEmpty(strList)) {
for (int i = 0; i < strList.size(); i++) {
String str = strList.get(i);
sb.append(nullToEmpty(str));
if (i != strList.size() - 1) {
sb.append(concatMark);
}
}
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(concatStringWithSeparate(SIGN_NEGATIVE,nullToEmpty("Java方法参数(String...)是"),nullToEmpty("可变长度参数列表")));
System.out.println(concatStringWithSeparate(SIGN_NEGATIVE,nullToEmpty("Java方法参数(String...)是"),nullToEmpty("可变长度参数列表")
,nullToEmpty("可变长度参数列表"),nullToEmpty("可变长度参数列表"),nullToEmpty("可变长度参数列表")));
System.out.println(concatStringWithSeparate(SIGN_NEGATIVE,nullToEmpty(""),nullToEmpty("")));
System.out.println(concatStringWithSeparate(SIGN_NEGATIVE,nullToEmpty(""),nullToEmpty(""),nullToEmpty(""),nullToEmpty("")));
}
}