4

我想要类似以下的工作:

public class A {
    @command_line_arg{"argname1"}
    static boolean x;

    @command_line_arg{"argname2"}
    static List<String> y;

    void main(String[] args) {
        /* perhaps a call such as parseArgs(); here */
        System.out.println("got argname1 = " + x);
        System.out.println("got argname2 = " + y);
    }
}

我需要使用什么库?

(有点相关这个。)

4

3 回答 3

2

(基于@fge 的回答。)

可以将JCommander与静态一起使用:

public class A {

    @Parameter(names = "-argname1")
    static boolean x;
    @Parameter(names = "-argname2", variableArity = true)
    static List<String> y;

    @Parameter
    public static List<String> remainingParameters;

    void main(String[] args) {
        new JCommander(A.class.newInstance(), args);
        System.out.println("got argname1 = " + x);
        System.out.println("got argname2 = " + y);
    }
}
于 2013-02-04T09:22:03.487 回答
1

您可以尝试klab-commons-cli,它为 Apache commons-cli 添加注释;没有分发 jar,您只需使用源代码。另一种不利用 commons-cli,但提供分发库的替代方法是args4j

于 2013-02-03T11:13:24.600 回答
1

JCommander可能对您有用。它使用注释来描述所有命令行参数并为您生成选项/帮助文本。

引用网站上的示例:

public class JCommanderExample {
  @Parameter
  private List<String> parameters = new ArrayList<String>();

  @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
  private Integer verbose = 1;

  @Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
  private String groups;

  @Parameter(names = "-debug", description = "Debug mode")
  private boolean debug = false;
}
于 2013-02-03T17:01:27.203 回答