我在一个项目中使用JCommander。
其文档将其parse method定义为
parse
public void parse(String... args)
Parse and validate the command line parameters.
所以,它接受可变数量的单个String
参数(根据我的理解。)
但是,我的args当前存储在一个字符串数组中,
public static void main(String[] args) {
CommandTemplate template = new CommandTemplate();
JCommander jc = new JCommander(template);
jc.parse(args); // <--- effectively what I'd like to accomplish.
}
答案 0 :(得分:5)
该代码已经可以正常工作了。 args
的{{1}}参数已经是parse
类型 - String[]
语法只是意味着允许编译器转换它:
String...
到
parse("foo", "bar", "baz");
隐式。如果传递的值已经是字符串数组,则不需要执行任何操作。
JLS没有专门针对此的部分,但是section 8.4.1(方法形式参数)有很多关于变量arity方法的信息,包括:
变量arity方法的调用可能包含比形式参数更多的实际参数表达式。将评估与变量arity参数之前的形式参数不对应的所有实际参数表达式,并将结果存储到将传递给方法调用的数组中(第15.12.4.2节)。