【问题标题】:Apache Commons CLI(Options)Apache Commons CLI(选项)
【发布时间】:2015-02-22 03:37:18
【问题描述】:

我一直在学习如何使用 Apache commons CLI。我想使用 options 类来描述命令行的可能选项,但是我在一些教程中看到他们使用两种方法来添加新选项。

第一个是这样的:

 options.addOption( OptionBuilder.withLongOpt( "block-size" )
                            .withDescription( "use SIZE-byte blocks" )
                            .hasArg()
                            .withArgName("SIZE")
                            .create() );

第二种方式是这样的:

 options.addOption( "C", false, "list entries by columns" );

我的问题是:使用第一个示例中的 OptionBuilder 类而不是使用第二个示例有什么好处。

谢谢!!

【问题讨论】:

标签: java command-line-interface options


【解决方案1】:

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,读者会更容易,即使对于不需要它的选项也是如此。

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

Wikipedia Entry

JavaWorld Link

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 2012-07-29
    • 2015-03-05
    • 2011-07-31
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多