删除 printUsage() 方法中的默认值。 [args4j 库]

Remove default value in printUsage() method. [args4j library]

如何在使用 printUsage() 方法时去掉“(default:value)”? Image

我试图查看 args4j 库的源代码并在 CmdLineParser Class 中搜索 printUsage() 方法,但没有找到任何东西。 (link) 问题只出现在 boolean 类型上。

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

您需要用您自己的 OptionHandler 覆盖默认的 BooleanOptionHandler。首先,像这样创建一个 class(在一个单独的文件中,因为反射调用):

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;
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);