[英]Pass array to variable parameter method
我在项目中使用JCommander。
其文档将其解析方法定义为
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.
}
该代码已经可以正常工作。 parse
的args
参数已经是String[]
类型String[]
String...
语法仅表示允许编译器进行转换:
parse("foo", "bar", "baz");
进入
parse(new String[] { "foo", "bar", "baz" });
隐含地。 如果传递的值已经是字符串数组,则不需要执行任何操作。
JLS没有专门介绍这一点的部分,但是8.4.1节 (方法形式参数)有很多有关可变arity方法的信息,包括:
可变arity方法的调用可能包含比形式参数更多的实际参数表达式。 将评估所有与变量arity参数之前的形式参数不符的实际参数表达式,并将结果存储到数组中,该数组将传递给方法调用(第15.12.4.2节)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.