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 是否支持这种语法?为什么这两个步骤语法更可取?

原文由 gnavi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 573
2 个回答

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

对于构造函数,如果重载变得复杂, _请参阅 Effective Java:编程语言指南的_ 第 1 项提示(考虑静态工厂方法而不是构造函数)。对于其他方法,重命名某些情况或使用参数对象会有所帮助。这是当你有足够的复杂性,难以区分的时候。一个明确的情况是您必须使用参数的顺序来区分,而不仅仅是数字和类型。

原文由 Kathy Van Stone 发布,翻译遵循 CC BY-SA 3.0 许可协议

不,但您可以使用 Builder Pattern ,如 Stack Overflow 答案 中所述。

如链接答案中所述,Builder Pattern 允许您编写如下代码

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

其中一些字段可以有默认值或者是可选的。

原文由 Eli Courtwright 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题