繁体   English   中英

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

[英]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.
}

该代码已经可以正常工作。 parseargs参数已经是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM