程序参数(arguments)
class或者jar文件之后的字符串会传给main函数的String[] args参数,多个参数用空格隔开。如果某一个参数包含多个单词,那么需要用引号包起来。当有很多程序参数,且有的必填,有的可选的时候,如果不设计好,顺序是很头疼的问题。一种解法是传键值对(key=value),完全不用在意参数的顺序。在main函数里面把键值对解析成Map,然后再校验以及使用。简单的示例代码如下:
public static void main(String[] args) {
Map
arguments = getArguments(args);
for (String key : arguments.keySet()) {
System.out.println(key + "=" + arguments.get(key));
}
}
public static Map
getArguments(String[] args) { Map
arguments = new HashMap
(); if (args == null || args.length == 0) { return arguments; } for (String arg : args) { int index = arg.indexOf("="); // 没有=,或者=是第一个,都出错。 if (index < 1) { throw new RuntimeException("param must be key value pair"); } String key = arg.substring(0, index); String value = arg.substring(index + 1); arguments.put(key, value); } return arguments; }