¿Java admite valores de parámetros predeterminados?

Resuelto gnavi asked hace 15 años • 27 respuestas

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?

gnavi avatar Jun 16 '09 01:06 gnavi
Aceptado

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.

Kathy Van Stone avatar Jun 15 '2009 18:06 Kathy Van Stone

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.

Eli Courtwright avatar Jun 15 '2009 19:06 Eli Courtwright