Apache Commons CLI - 选项类型和默认值
如何为 CLI 选项指定类型 - 例如 int
或 Integer
? (稍后,如何通过单个函数调用获取解析值?)
如何为 CLI 选项指定默认值?这样 CommandLine.getOptionValue()
或上面提到的函数调用会返回该值,除非在命令行上指定了该值?
How can I give a CLI Option a type - such as int
or Integer
? (Later, how can I get the parsed value with a single function call?)
How can I give a CLI Option a default value? Such that CommandLine.getOptionValue()
or the function call mentioned above return that value unless one is specified on the command line?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
编辑:现在支持默认值。请参阅下面的答案 https://stackoverflow.com/a/14309108/1082541。
正如 Brent Worden 已经提到的,不支持默认值。
我在使用 Option.setType 时也遇到了问题。在对
Integer.class
类型的选项调用getParsedOptionValue
时,我总是遇到空指针异常。因为文档并没有多大帮助,所以我查看了源代码。查看 TypeHandler 类和 PatternOptionBuilder 类您可以看到
Number.class
必须用于int
或整数
。这是一个简单的示例:
请记住,如果提供的数字不适合
int
,则value
可能会溢出。EDIT: Default values are now supported. See answer https://stackoverflow.com/a/14309108/1082541 below.
As Brent Worden already mentioned, default values are not supported.
I had issues with using
Option.setType
too. I always got a null pointer exception when callinggetParsedOptionValue
on an option with typeInteger.class
. Because the documentation was not really helpful I looked into the source code.Looking at the TypeHandler class and the PatternOptionBuilder class you can see that
Number.class
must be used forint
orInteger
.And here is a simple example:
Keep in mind that
value
can overflow if a number is provided which does not fit into anint
.我不知道是否不起作用或最近添加,但 getOptionValue() 有一个接受默认(字符串)值的重载版本
I do not know if not working or if added recently but getOptionValue() has an overloaded version that accepts a default (String) value
OptionBuilder 在 1.3 版和 1.3 版中已弃用。 1.4 和 Option.Builder 似乎没有直接设置类型的函数。
Option
类有一个名为setType
的函数。您可以使用函数CommandLine.getParsedOptionValue
检索转换后的值。不知道为什么它不再是构建器的一部分。现在需要一些像这样的代码:
并读取它:
这将给出一个
Long
类型的变量The OptionBuilder is deprecated in version 1.3 & 1.4 and
Option.Builder
doesn't seem to have a direct function to set the type. There is a function for theOption
class calledsetType
. You can a retrieve a converted value with the functionCommandLine.getParsedOptionValue
.Not sure why it's not part of the builder anymore. It requires some code like this now:
and reading it:
which would give a variable of type
Long
CLI 不支持默认值。任何未设置的选项都会导致
getOptionValue
返回null
。您可以使用 Option.setType 方法并使用 CommandLine.getParsedOptionValue
CLI does not support default values. Any unset option results in
getOptionValue
returningnull
.You can specify option types using the Option.setType method and extract the parsed option value as that type using CommandLine.getParsedOptionValue
人们可以使用 的其他定义
并将默认值包装为字符串。
示例:
输出: false
它对我有用
One can use other definition of
and wrap your default value to string.
Example:
output: false
it worked for me