如何处理主方法 java 调用中的空参数

How to handle empty parameters in a main method java call

我想要一种将参数传递给 java 主方法调用的动态方式,这是通过命令行 (cmd) 将参数传递给 Runnable JAR 文件。目前,我的 main() 方法采用 6 个参数并将每个参数设置为一个变量,然后再使用传入的变量调用另一个方法。

id 喜欢的是一种让用户能够将 5 个或更少的参数传递给命令行并通过将其设置为 null 或空字符串 ("") 值来安全处理丢失的参数的方法。

例如,如果我 运行 下面的命令,它应该知道将我没有指定的缺失参数(clientName 和 outputFolder)设置为空字符串。

java -Xmx1024m -jar MainApp.jar "Summary" **<missing>** "2015-06-07" "https://12345.bp.com/bp/" "c:\Parameters.txt" **<missing>**

这是我的主要方法的代码:

public static void main(String[] args) {
        try {               
            String dType = args[0];
            String clientName = args[1];
            String cycleString = args[2];
            String mspsURL = args[3];
            String inputFile = args[4];
            String outputFolder = args[5];

            System.out.println("**Main Parameters passed**");
            for(String x : args) {
                System.out.println(x);
            }

            runLogic(dType, clientName, cycleString, 
                    mspsURL, inputFile, outputFolder);          
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

感谢任何帮助。

如果您真正想要的是缺失项的关键字,您可以这样做:

String dType = (args[0].equals(keyword)?"":arg[0]);
String clientName = (args[1].equals(keyword)?"":arg[1]);
String cycleString = (args[2].equals(keyword)?"":arg[2]);
String mspsURL = (args[3].equals(keyword)?"":arg[3]);
String inputFile = (args[4].equals(keyword)?"":arg[4]);
String outputFolder = (args[5].equals(keyword)?"":arg[5]);

那么您的输入将是:

java -Xmx1024m -jar MainApp.jar "Summary" "keyword" "2015-06-07" "https://12345.bp.com/bp/" "c:\Parameters.txt" "keyword"

否则我会使用 Array class 的 length 属性。

测试输入数组的长度,并只为那么多的变量赋值。

示例:

int i = args.length;
String dType = (i>0?args[0]:""); //Just do this for each argument
i--; //Then reduce counter by 1

假设最后两个是可选的。

String dType = args[0];
String clientName = args[1];
String cycleString = args[2];
String mspsURL = args[3];
String inputFile = (args.length < 4 ? "default inputFile" : args[4]);
String outputFolder = (args.length < 5 ? "default outputFolder" : args[5]);