¿Java admite valores de parámetros predeterminados?
Encontré 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 predeterminado. Por ejemplo:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
¿Java admite este tipo de sintaxis? ¿Hay alguna razón por la que sea preferible esta sintaxis de dos pasos?
No, la estructura que encontró es cómo la maneja Java (es decir, con sobrecarga en lugar de parámetros predeterminados).
Para los constructores, consulte Java efectivo: consejo del elemento 1 de la Guía de lenguajes de programación (considere métodos de fábrica estáticos en lugar de constructores) si la sobrecarga se está volviendo complicada. Para otros métodos, puede resultar útil cambiar el nombre de algunos casos o utilizar un objeto de parámetro.
Aquí es cuando tienes suficiente complejidad como para que sea difícil diferenciar. Un caso definido es cuando hay que diferenciar utilizando el orden de los parámetros, no sólo el número y el tipo.
No, pero puedes usar el patrón Builder , como se describe en esta respuesta de Stack Overflow .
Como se describe en la respuesta vinculada, Builder Pattern le permite escribir código como
Student s1 = new StudentBuilder().name("Eli").buildStudent();
Student s2 = new StudentBuilder()
.name("Spicoli")
.age(16)
.motto("Aloha, Mr Hand")
.buildStudent();
en el que algunos campos pueden tener valores predeterminados o ser opcionales.