0

使用 printUsage() 方法时如何摆脱“(默认值:值)”? 图片

我试图查看 args4j 库的源代码并在 CmdLineParser 类中搜索 printUsage() 方法,但在那里没有找到任何东西。(链接) 只有布尔类型才会出现问题。

4

2 回答 2

2

似乎晚了,但也许这个答案仍然可以帮助某人:

您需要用您自己的 OptionHandler 覆盖默认的 BooleanOptionHandler。首先,创建一个类(在一个单独的文件中,因为反射调用),如下所示:

public class HelpOptionHandler extends BooleanOptionHandler {
    public HelpOptionHandler(CmdLineParser parser, OptionDef option, Setter<Boolean> setter) {
        super(parser, option, setter);
    }
    public String printDefaultValue() {
         return null;  // this prevents the default value to be printed in usage info
    }
}

然后,在您的帮助注释中注册此选项处理程序,如下所示:

@Option(name = "-h", aliases = "-help", help = true, usage = "print this message", 
        handler = jondos.vodafone.helper.HelpOptionHandler.class)
protected boolean help;
于 2016-04-05T11:30:10.800 回答
0
ParserProperties properties = ParserProperties.defaults();
properties.withOptionSorter(null); // Do not sort cmdLine options
properties.withShowDefaults(false); // Do not print defaults
CmdLineParser parser = new CmdLineParser(this, properties);
于 2021-08-05T19:56:40.297 回答