2015-03-02 30 views
1

我正在使用argparse4j来解析命令行参数。我想添加一个参数,当存在时,将boolean设置为true,否则它默认为false。我不想以包括参数的真或假,只是标识,所以在运行时会是这个样子:使用带Argparse4j的命令行参数设置标志

java firstArg --enable-boolean 

This answer显示,在Python中,我可以设置参数的action存储像这样一个true或false值:

parser.add_argument('-b', action='store_true', default=False) 

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

+0

这也被称为命令行“标志”。如果你显示更多的代码会有所帮助;你已经工作了,哪一部分没有工作。我从你链接的答案中添加了示例代码,因为你想知道如何做同样的事情。 – Air 2015-03-06 23:33:01

回答

2

您正在寻找的Arguments.storeTrue()行动:

Arguments.storeTrue()Arguments.storeFalse()使用,用于分别存储 值truefalseArguments.storeConst() 特殊情况。另外,它们分别创建 默认值falsetrue。例如:

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)); 
} 
$ java Demo --foo --bar 
Namespace(baz=true, foo=true, bar=false)