Me encontré con un código Java que tenía la siguiente estructura:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Sé que en C++ puedo asignar a un parámetro un valor por defecto. Por ejemplo:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
¿Admite Java este tipo de sintaxis? ¿Hay alguna razón por la que esta sintaxis de dos pasos sea preferible?
No, la estructura que has encontrado es como la maneja Java (es decir, con sobrecarga en lugar de parámetros por defecto).
Para los constructores, [Véase el consejo del punto 1 de Java Efectivo: Guía de Lenguaje de Programación (Considere métodos de fábrica estáticos en lugar de constructores) si la sobrecarga se complica. Para otros métodos, renombrar algunos casos o usar un objeto parámetro puede ayudar. Esto es cuando tienes suficiente complejidad que diferenciar es difícil. Un caso definitivo es cuando tienes que diferenciar usando el orden de los parámetros, no sólo el número y el tipo.
No.
Puede conseguir el mismo comportamiento pasando un objeto que tenga valores predeterminados inteligentes. Pero, de nuevo, depende de cuál sea su caso.