Encontrei um código Java que tinha a seguinte estrutura:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Eu sei que em C++ posso atribuir um valor padrão a um parâmetro. Por exemplo:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
O Java suporta este tipo de sintaxe? Há alguma razão para que esta sintaxe de dois passos seja preferível?
Não, a estrutura que você encontrou é como Java lida com ele (ou seja, com sobrecarga ao invés dos parâmetros padrão).
Para construtores, Veja Effective Java: Programming Language Guide's Dica do item 1 (Considere métodos estáticos de fábrica ao invés de construtores) se a sobrecarga estiver ficando complicada. Para outros métodos, renomear alguns casos ou usar um objeto de parâmetro pode ajudar. Isto é quando você tem complexidade suficiente que a diferenciação é difícil. Um caso definido é quando você tem que diferenciar usando a ordem dos parâmetros, não apenas o número e o tipo.
Não.
Você pode alcançar o mesmo comportamento ao passar um Objeto que tem padrões inteligentes. Mas mais uma vez depende do seu caso em mãos.