Java 支持默认参数值吗?

27 浏览
0 Comments

Java 支持默认参数值吗?

我遇到了一些 Java 代码,其结构如下:

public MyParameterizedFunction(String param1, int param2)
{
    this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
    //use all three parameters here
}

我知道在 C++ 中可以给参数赋一个默认值。例如:

void MyParameterizedFunction(String param1, int param2, bool param3=false);

Java 支持这种语法吗?为什么这种两步语法更可取?

admin 更改状态以发布 2023年5月20日
0
0 Comments

不过,你可以使用建造者模式,就像这个 Stack Overflow 答案中所描述的那样。

如链接答案中所述,建造者模式可以让你编写像

Student s1 = new StudentBuilder().name("Eli").buildStudent();
Student s2 = new StudentBuilder()
                 .name("Spicoli")
                 .age(16)
                 .motto("Aloha, Mr Hand")
                 .buildStudent();

这样的代码,其中某些字段可以具有默认值或者可选。

0
0 Comments

不,你找到的结构就是 Java 处理它的方式(即使用重载而不是默认参数)。

对于构造函数,请参见 Effective Java: Programming Language Guide 的第 1 条建议(考虑使用静态工厂方法而不是构造函数)

如果重载变得复杂。对于其他方法,重命名一些情况或使用参数对象可能有所帮助。

这是当你有足够的复杂性使区分变得困难时。明显的一种情况是你必须使用参数的顺序来区分,而不仅仅是数量和类型。

0