📜  java中的默认参数(1)

📅  最后修改于: 2023-12-03 15:02:03.868000             🧑  作者: Mango

Java中的默认参数

在Java中,默认参数是指在方法定义时为方法的参数指定默认值,当调用该方法时,如果传递了对应参数,则使用传递的值,否则使用默认值。

语法

在Java中,为参数指定默认值的语法如下所示:

public void method(int param1, String param2, boolean param3) {
    // 方法体
}

public void method(int param1, String param2, boolean param3 = true) {
    // 方法体
}

在上面的示例中,第一个方法没有默认参数,而第二个方法的第三个参数 param3 被指定为默认值为 true

注意事项

以下是在使用默认参数时需要注意的几个要点:

  • 默认参数只能指定在方法定义的最后一个参数上。
  • 对于有多个参数的方法,可以省略某些参数,并仅为需要的参数提供值。这被称为具有命名参数的方法调用。
  • 在Java 8及以下版本中,Java不支持默认参数,但可以实现默认参数的行为。
实现Java中的默认参数

在Java中实现默认参数的行为,可以使用方法重载或使用Java 8中的lambda表达式和Supplier函数式接口。

方法重载

方法重载是指在一个类中定义多个方法,每个方法具有不同的参数数量或类型。方法重载可以用于实现默认参数。

例如:

public class DefaultParameters {
    public void print(String text) {
        System.out.println(text);
    }

    public void print(String text, int times) {
        for (int i = 0; i < times; i++) {
            System.out.println(text);
        }
    }
}

在上面的示例中,我们定义了两个 print 方法,第一个方法只有一个参数,第二个方法有两个参数。当我们调用第一个方法时,只需要提供一个参数,第二个参数使用默认值即可。

Java 8中使用lambda表达式和Supplier函数式接口

使用Java 8中的lambda表达式和Supplier函数式接口可以非常方便地实现默认参数的行为。

例如:

public class DefaultParameters {
    public void print(String text, Supplier<Integer> times) {
        for (int i = 0; i < times.get(); i++) {
            System.out.println(text);
        }
    }

    // 使用默认参数为1
    public void print(String text) {
        print(text, () -> 1);
    }
}

在上面的示例中,我们定义了一个 print 方法,该方法的第二个参数是一个 Supplier 函数式接口,其返回类型为 Integer。当我们调用 print 方法时,如果不提供第二个参数,则使用默认值为1。如果我们想为第二个参数提供不同的值,只需要传递一个 Supplier 函数式接口并返回所需的值即可。

结论

虽然Java中没有内置的默认参数,但可以使用方法重载或使用Java 8中的lambda表达式和Supplier函数式接口来实现默认参数的行为。这有助于简化代码和提高可读性。