使用 Argparse4j 的命令行参数设置标志

yel*_*von 3 java command-line-arguments argparse4j

我正在使用argparse4j来解析命令行参数。我想添加一个参数,当存在时,将布尔值设置为 true,否则默认为 false。我不想在参数中包含 true 或 false,只包含标识符,因此运行时它看起来像这样:

java firstArg --enable-boolean
Run Code Online (Sandbox Code Playgroud)

这个答案表明,在 Python 中,我可以设置action参数来存储 true 或 false 值,如下所示:

parser.add_argument('-b', action='store_true', default=False)
Run Code Online (Sandbox Code Playgroud)

我如何使用 argparse4j 在 Java 中做同样的事情?

Air*_*Air 5

您正在寻找的Arguments.storeTrue()操作:

Arguments.storeTrue()和是A​​rguments.storeConst()Arguments.storeFalse()的特殊情况,分别用于存储值和。此外,它们还分别创建和的默认值。例如:truefalsefalsetrue

public static void main(String[] args) throws ArgumentParserException {
    ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
    parser.addArgument("--foo").action(Arguments.storeTrue());
    parser.addArgument("--bar").action(Arguments.storeFalse());
    parser.addArgument("--baz").action(Arguments.storeFalse());
    System.out.println(parser.parseArgs(args));
}
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) throws ArgumentParserException {
    ArgumentParser parser = ArgumentParsers.newArgumentParser("prog");
    parser.addArgument("--foo").action(Arguments.storeTrue());
    parser.addArgument("--bar").action(Arguments.storeFalse());
    parser.addArgument("--baz").action(Arguments.storeFalse());
    System.out.println(parser.parseArgs(args));
}
Run Code Online (Sandbox Code Playgroud)