【问题标题】:How to pass optional arguments in java如何在java中传递可选参数
【发布时间】:2021-01-08 21:11:30
【问题描述】:

我有一个 java 代码,它可以进行 api 调用,其中包含参数。 我已将参数作为参数传递,这些参数在构建 jar 时需要传递。 我以这种方式运行我的 jar 文件-> jarname args[0] args[1] args[2] args[3] args[4]

现在,我需要一种方法,可以在构建 jar 时为 PR 传递空参数。有什么方法可以实现吗?..我希望 PR 参数是可选的。

String token = args[0];
        String ProjectName = args[1];
        String Branch = args[2];
        String Language= args[3];
                int PR = args[4];

URL IssuesTotalcountURL = new URL("sonarurl/api/issues/search?pageSize=500&componentKeys="+ProjectName+"&branch="+Branch+"&severities="+ list.get(i)+"&pullrequest=+PR+");

【问题讨论】:

  • 您可以覆盖 public void something()public void something(int i)public void something(int i, String s) 等方法。如果可选参数的类型相同,则可以使用... 运算符,它是传递数组的语法糖。

标签: java sonarqube


【解决方案1】:

也许您可以创建一个私有方法来检查是否可以检索该值,或者获取一个默认值,如下所示:

public static void main(String[] args){
        String token = getFromArgsOrDefault(args,0,"defaultToken");
        String projectName = getFromArgsOrDefault(args,1,"defaultProjectName");
        String branch = getFromArgsOrDefault(args,2,"defaultBranch");
        String language = getFromArgsOrDefault(args,3,"defaultLanguage");
        String PRString = getFromArgsOrDefault(args,4,"4");
        int PR = Integer.parseInt(PRString);

        System.out.println(token  +" "+ projectName +" "+ branch +" "+ language +" "+ PRString +" "+ PR);
    }

    private static String getFromArgsOrDefault(String[] args, int index, String defaultValue){
        if(args.length > index) {
            return args[index];
        }
        return defaultValue;
    }

【讨论】:

    【解决方案2】:

    您可以进行空值和长度(isEmpty()) 检查。

    例子:

    String PR = args[4] != null && !args[4].isEmpty() ? args[4]:"";
    

    或使用 Java 8:

    String PR= Optional.ofNullable(args[4]).orElse("");
    

    【讨论】:

    • args[4] == null && args[4].isEmpty() 这是错误的。如果为null,则为NPE
    • 可以简化为args[4] != null ? args[4] : ""。您的回答暗示 Java 8 风格更简洁,但这只是因为您选择的三元组效率低下
    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2020-11-02
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2012-06-05
    相关资源
    最近更新 更多