如何设置默认方法参数值?

这个问题在这里已经有了答案:

  • Java是否支持默认参数值? 19个答案

  • 你可以通过重载方法来完成。

    public int doSomething(int arg1, int arg2)
    {
            return 0;
    }
    
    public int doSomething()
    {
            return doSomething(defaultValue0, defaultValue1);
    }
    

    通过创建这个无参数方法,您允许用户使用在无参数方法的实现中提供的默认参数来调用parameterfull方法。 这被称为重载该方法。


    如果你的参数是相同的类型,你可以使用可变参数:

    public int something(int... args) {
        int a = 0;
        int b = 0;
        if (args.length > 0) {
          a = args[0];
        }
        if (args.length > 1) {
          b = args[1];
        }
        return a + b
    }
    

    但是这样你就失去了单个参数的语义,或者

    有一个重载的方法将呼叫转接到参数化版本

    public int something() {
      return something(1, 2);
    }
    

    或者如果该方法是某种初始化过程的一部分,则可以改为使用构建器模式:

    class FoodBuilder {
       int saltAmount;
       int meatAmount;
       FoodBuilder setSaltAmount(int saltAmount) {
           this.saltAmount = saltAmount;
           return this;
       }
       FoodBuilder setMeatAmount(int meatAmount) {
           this.meatAmount = meatAmount;
           return this;
       }
       Food build() {
           return new Food(saltAmount, meatAmount);
       }
    }
    
    Food f = new FoodBuilder().setSaltAmount(10).build();
    Food f2 = new FoodBuilder().setSaltAmount(10).setMeatAmount(5).build();
    

    然后与Food对象一起工作

    int doSomething(Food f) {
        return f.getSaltAmount() + f.getMeatAmount();
    }
    

    构建器模式允许您稍后添加/删除参数,您无需为它们创建新的重载方法。


    不。Java不支持像C ++这样的默认参数。 你需要定义一个不同的方法:

    public int doSomething()
    {
       return doSomething(value1, value2);
    }
    
    链接地址: http://www.djcxy.com/p/20861.html

    上一篇: how to set default method argument values?

    下一篇: Java optional parameters