Java 方法的参数可以有默认值吗?

发布时间:2019-11-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java 方法的参数可以有默认值吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Java 方法的参数可以有默认值吗?

例如

void method(String p1, int p2, bool P3=false);

回答

Java不支持这种特性,
如果你真的有需求,你可以

  • 通过方法的重载间接的支持默认的参数值
  • 使用工厂模式

重载

这个很简单

void method(String p1, int p2, bool p3){   // .... }; void method(String p1, int p2){   bool p3 = false;   // ...  };

这样就相当于给p3一个默认的参数值。

但是有的时候如果参数太多,就不适合了。
就要用到下面的工厂方法

工厂方法

public class StudentBuilder {     PRivate String _name;     private int _age = 14;      // this has a default     private String _motto = ""; // most students don't have one      public StudentBuilder() { }      public Student buildStudent()     {         return new Student(_name, _age, _motto);     }      public StudentBuilder name(String _name)     {         this._name = _name;         return this;     }      public StudentBuilder age(int _age)     {         this._age = _age;         return this;     }      public StudentBuilder motto(String _motto)     {         this._motto = _motto;         return this;     } }
Student s1 = new StudentBuilder().name("Eli").buildStudent(); Student s2 = new StudentBuilder()                  .name("Spicoli")                  .age(16)                  .motto("Aloha, Mr Hand")                  .buildStudent();

在上面的示例中,我们没有直接
的创建一个Student对象,而是
通过StudentBuilder来创建一个工厂,
然后在这个工厂中预先设定了一些模板,

为什么要创建一个StudentBuilder

而不是直接这样写:

Student s1 = new Student().age(16)

这样写有两个坏处

  • 实例化有些字段没有初始化,可能存在

安全隐患

  • 很多时候,我们创建一个Student之后,并不希望他有一个.age()方法,这个方法可能会被滥用。

收录https://github.com/fish56/Jav...

脚本宝典总结

以上是脚本宝典为你收集整理的Java 方法的参数可以有默认值吗?全部内容,希望文章能够帮你解决Java 方法的参数可以有默认值吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。