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是否支持这种语法? 有什么原因使这种两步法的语法更可取吗?

解决办法

不,你发现的结构是Java的处理方式(也就是用重载代替默认参数)。

对于构造函数,见Effective Java: Programming Language Guide's第1项提示(考虑用静态工厂方法代替构造函数),如果重载越来越复杂。对于其他方法,重命名一些情况或使用一个参数对象会有帮助。这是当你有足够的复杂性,以至于区分起来很困难。一个确定的情况是,你必须使用参数的顺序来区分,而不仅仅是数量和类型。

评论(7)

遗憾的是,没有。

评论(13)

没有。

你可以通过传递一个具有智能缺省的对象来实现同样的行为。但这同样取决于你手头的情况是什么。

评论(0)