将数组传递给变量参数方法

时间:2017-01-19 08:40:23

标签: java

我在一个项目中使用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.
}

1 个答案:

答案 0 :(得分:5)

该代码已经可以正常工作了。 args的{​​{1}}参数已经是parse类型 - String[]语法只是意味着允许编译器转换它:

String...

parse("foo", "bar", "baz");

隐式。如果传递的值已经是字符串数组,则不需要执行任何操作。

JLS没有专门针对此的部分,但是section 8.4.1(方法形式参数)有很多关于变量arity方法的信息,包括:

  

变量arity方法的调用可能包含比形式参数更多的实际参数表达式。将评估与变量arity参数之前的形式参数不对应的所有实际参数表达式,并将结果存储到将传递给方法调用的数组中(第15.12.4.2节)。