当前位置: 首页 > 知识库问答 >
问题:

Apache Commons CLI-订购帮助选项?

宫弘亮
2023-03-14

我正在使用Apache Commons CLI。默认情况下,它在命令行中按字母顺序按键排列帮助选项。因此,出现的情况是:

-csv
-ip
-msisdn
-xml

但是我想订购它们如下:

-csv
-xml
-ip
-msisdn

我知道有一个OptionFor事体类可以使用并传递给HelpFor事体,但是在上面(http://www.marko.homeunix.org/programming/java/commons-cli/api/org/apache/commons/cli/HelpFormatter.OptionComparator.html)看不到任何关于如何将其用于我的目的的示例。

只是想知道有没有人做过类似的事情?

谢啦

共有3个答案

蒋高杰
2023-03-14

实现这种比较器的最佳方法是:

class OptionComparator<T extends Option> implements Comparator<T> {

    private static final String OPTS_ORDER = "abcdef"; // short option names

    public int compare(T o1, T o2) {
        return OPTS_ORDER.indexOf(o1.getOpt()) - OPTS_ORDER.indexOf(o2.getOpt());
    }
}
慕俊迈
2023-03-14

从Apache Commons CLI 1.2开始,您可以直接在HelpFormatter类上设置comparator:

设置选项比较程序[链接]

公共空setOption比较器(比较器比较器)

设置选项在帮助文本中输出时用于排序的比较器。传入null参数将把排序设置为默认模式。

您应该提供自己的Comparator实现

锺离飞尘
2023-03-14

从v1开始。3您可以调用setOptionComparator(null),这样格式化程序将跳过排序,参数将按添加的相同顺序打印。

HelpFormatter formatter = new HelpFormatter();
formatter.setOptionComparator(null);

链接到实际问题。

 类似资料:
  • 问题内容: 这是情况。我有两个表: 用户(网站的注册用户), 消息(彼此之间发送的个人消息) 消息表具有以下列(仅是重要的列): ID, 发件人(发送消息的用户的ID), 发送消息的用户的接收者ID), reply_to(此消息要回复到的消息的ID,可以为NULL) 我需要做的是构造一个SELECT查询,该查询将选择2个用户之间的完整对话。即,如果用户A回复了从用户B发送的消息,而用户B回复了该消

  • 记住命令,特别是命令的用法挺难,不同的命令都有各自的可以使用的参数。一般的命令都支持 --help 参数,它会为你显示命令的帮助信息,比如可用的参数,参数的作用等等。或者也可以使用 man 命令查看命令的帮助手册。 查看帮助,例如看一下 curl 命令的帮助信息: curl --help 返回信息截取: Usage: curl [options...] <url> Options: (H) me

  • 问题内容: 我有一个与数据库对话的servlet,然后返回一个有序(按时间排序)对象的列表。在servlet部分,我有 从日志中,我可以看到数据库以正确的顺序返回了User对象。 在前端,我有 但是顺序改变了。 我只在返回的列表很大(超过130个用户)时才注意到这一点。 我尝试使用Firebug进行调试,Firebug中的“响应选项卡”显示列表的顺序与servlet中的日志不同。 我做错了什么吗?

  • 我是Flink的新手,我试图理解Flink是如何在其的并行抽象中命令调用。考虑这个产生部分和的流的例子: 我希望它的输出是流:。事实上,就在这里。 是否可以安全地假设这种情况始终存在,尤其是在从具有大量并行性的源读取数据时?

  • Object: JSON JSON解码器和编码器。 JSON Method: encode 转换一个对象或数组为JSON字符串。 语法: var myJSON = JSON.encode(obj); 参数: obj - (object) 转换为字符串的对象。 返回: (string) JSON字符串。 示例: var fruitsJSON = JSON.encode({apple: 'red',

  • 我在一个JPanel中有3个组件,其中GridBagLayout是JPanel的LayoutManager,并在这3个组件上使用GridBagConstraints。 使用当前代码(如下所示),3个元素会正确地出现在面板上。问题是第一个组件是一个JLabel,它有时很长,如果是这样的话,它就会扩展,使其他两个组件变小。 我的目标是拥有一个GridBagLayout为1行4列的JPanel,其中第一