如何在Java中为命令行参数设置标志?

如何在Java中为命令行参数设置标志?,java,command-line-arguments,Java,Command Line Arguments,我有一个用于25个应用程序的枚举和一个用于某些环境的枚举 现在使用我的代码,我可以不传递任何参数,在所有环境中运行所有应用程序(这是我想要的),或者我可以按照它将运行的顺序传递一个应用程序和一个环境。我需要能够通过执行类似-app app1 app2 app3的操作来传递应用程序列表-环境1环境2 我以前从未使用过标志,也从未尝试过解析命令数组。这是部分代码。我认为if很好,但else是我需要帮助的地方 public static Application chooseAppTest(String

我有一个用于25个应用程序的枚举和一个用于某些环境的枚举

现在使用我的代码,我可以不传递任何参数,在所有环境中运行所有应用程序(这是我想要的),或者我可以按照它将运行的顺序传递一个应用程序和一个环境。我需要能够通过执行类似-app app1 app2 app3的操作来传递应用程序列表-环境1环境2

我以前从未使用过标志,也从未尝试过解析命令数组。这是部分代码。我认为if很好,但else是我需要帮助的地方

public static Application chooseAppTest(String[] args) 
    {
        Application application = null;

        switch (Application.valueOf(args[0]))
        {
        case ACCOUNTINVENTORY:
            new AccountInventory(Environment.valueOf(args[1]));
            AccountInventory.accountInventoryDatabaseTests(testResults);
            break; 

public static void main(String[] args) 
{
    // run tests and collect results
    if (args.length == 0)
    {
        LogIn.loginTest(testResults);
        DatabaseTest.testResults(testResults);
        LinkTest.linkTests(testResults);
    }
    else 
    {
            // First choose application, then choose environment
        Application.chooseAppTest(args);
    }

尽管这可能无法直接回答您的问题,但我强烈建议您为此使用库。一些广泛使用的选项:

  • Commons CLI-
  • JCommander-
  • 乔普简单-
  • arg4j-
  • 毕竟,“生命太短暂,无法解析命令行参数”。例如(使用),您只需要通过注释定义参数:

    //class MyOptions
    @Parameter(names = { "-d", "--outputDirectory" }, description = "Directory")
    private String outputDirectory;
    
    然后使用以下命令解析bean:

    public static void main(String[] args){
        MyOptions options = new MyOptions();
        new JCommander(options, args);
    }
    

    尽管这可能无法直接回答您的问题,但我强烈建议您为此使用库。一些广泛使用的选项:

  • Commons CLI-
  • JCommander-
  • 乔普简单-
  • arg4j-
  • 毕竟,“生命太短暂,无法解析命令行参数”。例如(使用),您只需要通过注释定义参数:

    //class MyOptions
    @Parameter(names = { "-d", "--outputDirectory" }, description = "Directory")
    private String outputDirectory;
    
    然后使用以下命令解析bean:

    public static void main(String[] args){
        MyOptions options = new MyOptions();
        new JCommander(options, args);
    }
    

    问题是什么?它不起作用吗?顺便说一句,更好的设计应该是命令模式实现试试这个:;)你为什么又问同样的问题?问题是什么?它不起作用吗?顺便说一句,更好的设计应该是命令模式实现试试这个:;)你为什么又问同样的问题?