Je suis tombé sur un code Java qui avait la structure suivante :
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Je sais qu'en C++, je peux attribuer à un paramètre une valeur par défaut. Par exemple :
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Java supporte-t-il ce type de syntaxe ? Y a-t-il des raisons pour lesquelles cette syntaxe en deux étapes est préférable ?
Non, la structure que vous avez trouvée est la façon dont Java la gère (c'est-à-dire avec une surcharge au lieu de paramètres par défaut).
Pour les constructeurs, [Voir le conseil du point 1 de Effective Java : Programming Language Guide][1] (Envisager des méthodes de fabrique statiques plutôt que des constructeurs) si la surcharge devient compliquée. Pour les autres méthodes, renommer certains cas ou utiliser un objet paramètre peut aider. C'est lorsque vous avez suffisamment de complexité pour que la différenciation soit difficile. Un cas précis est celui où vous devez faire la différence en utilisant l'ordre des paramètres, et pas seulement le nombre et le type.
[1] : https://en.wikipedia.org/wiki/Joshua_Bloch#Bibliography
Non.
Vous pouvez obtenir le même comportement en passant un objet qui a des valeurs par défaut intelligentes. Mais encore une fois, cela dépend de votre cas.