Mi sono imbattuto in un codice Java che aveva la seguente struttura:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
So che in C++ posso assegnare a un parametro un valore predefinito. Per esempio:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Java supporta questo tipo di sintassi? Ci sono ragioni per cui questa sintassi a due passi è preferibile?
No, la struttura che hai trovato è come Java la gestisce (cioè con l'overloading invece dei parametri predefiniti).
Per i costruttori, Vedi Effective Java: Programming Language Guide's Suggerimento del punto 1 (Considera i metodi statici di fabbrica invece dei costruttori) se l'overloading sta diventando complicato. Per altri metodi, rinominare alcuni casi o usare un oggetto parametro può aiutare. Questo è quando hai abbastanza complessità che differenziare è difficile. Un caso preciso è quello in cui devi differenziare usando l'ordine dei parametri, non solo il numero e il tipo.
No.
Si può ottenere lo stesso comportamento passando un oggetto che ha dei default intelligenti. Ma ancora una volta dipende dal vostro caso.