Apache Commons CLI(选项)
Apache Commons CLI(Options)
我一直在学习如何使用 Apache commons CLI。我想使用选项 class 来描述命令行的可能选项,但我在一些教程中看到他们使用两种方法来添加新选项。
第一个是这样的:
options.addOption( OptionBuilder.withLongOpt( "block-size" )
.withDescription( "use SIZE-byte blocks" )
.hasArg()
.withArgName("SIZE")
.create() );
第二种方式是这样的:
options.addOption( "C", false, "list entries by columns" );
我的问题是:像第一个示例那样使用 OptionBuilder class 而不是使用第二个示例有什么好处。
谢谢!!
Options.addOption(...)
提供了一些参数组合,如String opt, String longOpt, boolean hasArg, String description
。使用 Options.addOption(...)
显然比使用 OptionBuilder
.
更方便
但是,OptionBuilder
提供了额外的参数,如 hasArgs(int num)
、isRequired
、withType
、withValueSeparator
等,这些参数无法使用 Options.addOption(...)
。如果你需要它们,你必须使用 OptionBuilder
.
所以,使用Options.addOption(...)
除了代码更简洁(更易于阅读和编写)外,没有任何优势。我建议您可以使用其中任何一种,但要保持一致:如果您的代码需要 OptionBuilder
,如果您始终使用 OptionBuilder
,那么 reader 会更容易,即使对于不需要它的选项也是如此.
背景:这里使用的模式是Builder Pattern,用于创建类,种类繁多属性,可能经常有很多未使用的(默认)属性
我一直在学习如何使用 Apache commons CLI。我想使用选项 class 来描述命令行的可能选项,但我在一些教程中看到他们使用两种方法来添加新选项。
第一个是这样的:
options.addOption( OptionBuilder.withLongOpt( "block-size" )
.withDescription( "use SIZE-byte blocks" )
.hasArg()
.withArgName("SIZE")
.create() );
第二种方式是这样的:
options.addOption( "C", false, "list entries by columns" );
我的问题是:像第一个示例那样使用 OptionBuilder class 而不是使用第二个示例有什么好处。
谢谢!!
Options.addOption(...)
提供了一些参数组合,如String opt, String longOpt, boolean hasArg, String description
。使用 Options.addOption(...)
显然比使用 OptionBuilder
.
但是,OptionBuilder
提供了额外的参数,如 hasArgs(int num)
、isRequired
、withType
、withValueSeparator
等,这些参数无法使用 Options.addOption(...)
。如果你需要它们,你必须使用 OptionBuilder
.
所以,使用Options.addOption(...)
除了代码更简洁(更易于阅读和编写)外,没有任何优势。我建议您可以使用其中任何一种,但要保持一致:如果您的代码需要 OptionBuilder
,如果您始终使用 OptionBuilder
,那么 reader 会更容易,即使对于不需要它的选项也是如此.
背景:这里使用的模式是Builder Pattern,用于创建类,种类繁多属性,可能经常有很多未使用的(默认)属性