删除 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);
如何在使用 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);