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)isRequiredwithTypewithValueSeparator 等,这些参数无法使用 Options.addOption(...)。如果你需要它们,你必须使用 OptionBuilder.

所以,使用Options.addOption(...)除了代码更简洁(更易于阅读和编写)外,没有任何优势。我建议您可以使用其中任何一种,但要保持一致:如果您的代码需要 OptionBuilder,如果您始终使用 OptionBuilder,那么 reader 会更容易,即使对于不需要它的选项也是如此.

背景:这里使用的模式是Builder Pattern,用于创建类,种类繁多属性,可能经常有很多未使用的(默认)属性

Wikipedia Entry

JavaWorld Link