Java支持默认参数值吗?

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支持这种语法吗?这两个步骤的语法有什么更好的理由吗?


摇曳的蔷薇
浏览 1447回答 3
3回答

胡子哥哥

不,您发现的结构是Java如何处理它(也就是说,使用重载而不是默认参数)。对于建筑工人来说,参见有效Java:编程语言指南的项目1提示(考虑静态工厂方法而不是构造函数),如果重载变得复杂。对于其他方法,重命名某些情况或使用参数对象可能会有所帮助。这是当你有足够的复杂性,区分是困难的。一个明确的例子是,你必须用参数的顺序来区分,而不仅仅是数字和类型。

侃侃无极

不,但你可以用建造者模式,如上文所述这个堆栈溢出回答.如链接答案中所述,Builder模式允许您编写如下代码Student s1 = new StudentBuilder().name("Eli").buildStudent();Student s2 = new StudentBuilder()                  .name("Spicoli")                  .age(16)                  .motto("Aloha, Mr Hand")                  .buildStudent();其中,某些字段可以具有默认值,也可以是可选的。
打开App,查看更多内容
随时随地看视频慕课网APP