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 支持这种语法吗?为什么这种两步语法更可取?
admin 更改状态以发布 2023年5月20日
不过,你可以使用建造者模式,就像这个 Stack Overflow 答案中所描述的那样。
如链接答案中所述,建造者模式可以让你编写像
Student s1 = new StudentBuilder().name("Eli").buildStudent(); Student s2 = new StudentBuilder() .name("Spicoli") .age(16) .motto("Aloha, Mr Hand") .buildStudent();
这样的代码,其中某些字段可以具有默认值或者可选。
不,你找到的结构就是 Java 处理它的方式(即使用重载而不是默认参数)。
对于构造函数,请参见 Effective Java: Programming Language Guide 的第 1 条建议(考虑使用静态工厂方法而不是构造函数)
如果重载变得复杂。对于其他方法,重命名一些情况或使用参数对象可能有所帮助。
这是当你有足够的复杂性使区分变得困难时。明显的一种情况是你必须使用参数的顺序来区分,而不仅仅是数量和类型。