如何在Java中使用Argparse4j传递列表作为命令行参数
在Java中使用Argparse4j接收列表类型的命令行参数
要让Argparse4j的--list参数接收多个值并以List<String>类型获取,只需要在定义参数时调用.nargs()方法指定可接收的参数数量,具体实现如下:
完整代码示例
import org.argparse4j.ArgumentParsers; import org.argparse4j.inf.ArgumentParser; import org.argparse4j.inf.ArgumentParserException; import org.argparse4j.inf.Namespace; import java.util.List; public class Main { public static void main(String[] args) { // 创建解析器 ArgumentParser parser = ArgumentParsers.newFor("main").build(); // 定义--list参数,指定可接收多个值 parser.addArgument("-l", "--list") .help("Argument list to parse") .nargs("+"); // "+"表示至少需要传入1个参数,用"*"则允许0个 try { // 解析命令行参数 Namespace ns = parser.parseArgs(args); // 以List<String>类型获取参数值 List<String> listArgs = ns.getList("list"); // 输出结果验证 System.out.println("传入的列表参数:"); for (String item : listArgs) { System.out.println("- " + item); } } catch (ArgumentParserException e) { parser.handleError(e); System.exit(1); } } }
关键说明
.nargs("+"):要求该参数至少接收1个值,若用户未传值会直接抛出错误提示.nargs("*"):允许该参数接收0个或多个值,适合可选的列表参数- 调用
ns.getList("list")即可直接获取List<String>类型的参数集合
运行示例
执行命令:
java Main --list foo bar fizz
输出结果:
传入的列表参数: - foo - bar - fizz
内容的提问来源于stack exchange,提问作者jjbskir
相关产品推荐
相关产品推荐

