Paramètres par défaut Java utilisant la surcharge de méthode

1. Vue d'ensemble

Dans ce court didacticiel, nous allons démontrer l'utilisation de la surcharge de méthode pour simuler les paramètres par défaut en Java.

Ici, nous disons simuler car contrairement à certains autres langages OOP (comme C ++ et Scala), la spécification Java ne prend pas en charge l'attribution d'une valeur par défaut à un paramètre de méthode .

2. Exemple

A titre d'exemple, faisons du thé! Tout d'abord, nous aurons besoin d'un thé POJO:

public class Tea { static final int DEFAULT_TEA_POWDER = 1; private String name; private int milk; private boolean herbs; private int sugar; private int teaPowder; // standard getters } 

Ici, le nom est un champ obligatoire, car notre thé doit au moins avoir un nom.

Ensuite, il ne peut y avoir de thé sans thé en poudre. Donc, nous supposerons que l'utilisateur veut une poudre de thé standard de 1 cuillère à soupe dans son thé, si elle n'est pas fournie au moment de l'invocation. C'est donc notre premier paramètre par défaut .

Les autres paramètres optionnels sont le lait (en ml), les herbes (à ajouter ou non) et le sucre (en cuillère à soupe). Si l'une de leurs valeurs n'est pas fournie, nous supposons que l'utilisateur n'en veut pas.

Voyons comment y parvenir en Java en utilisant la surcharge de méthode :

public Tea(String name, int milk, boolean herbs, int sugar, int teaPowder) { this.name = name; this.milk = milk; this.herbs = herbs; this.sugar = sugar; this.teaPowder = teaPowder; } public Tea(String name, int milk, boolean herbs, int sugar) { this(name, milk, herbs, sugar, DEFAULT_TEA_POWDER); } public Tea(String name, int milk, boolean herbs) { this(name, milk, herbs, 0); } public Tea(String name, int milk) { this(name, milk, false); } public Tea(String name) { this(name, 0); }

Comme il est évident, nous utilisons ici le chaînage de constructeurs, une forme de surcharge pour fournir aux paramètres de la méthode des valeurs par défaut.

Ajoutons maintenant un test simple pour voir cela en action:

@Test public void whenTeaWithOnlyName_thenCreateDefaultTea() { Tea blackTea = new Tea("Black Tea"); assertThat(blackTea.getName()).isEqualTo("Black Tea"); assertThat(blackTea.getMilk()).isEqualTo(0); assertThat(blackTea.isHerbs()).isFalse(); assertThat(blackTea.getSugar()).isEqualTo(0); assertThat(blackTea.getTeaPowder()).isEqualTo(Tea.DEFAULT_TEA_POWDER); }

3. Alternatives

Il existe d'autres moyens de réaliser la simulation des paramètres par défaut en Java. Certains d'entre eux sont:

  • utilisation du modèle Builder
  • en utilisant facultatif
  • Autoriser les valeurs nulles comme arguments de méthode

Voici comment nous pouvons utiliser la troisième façon d'autoriser les arguments nuls dans notre exemple:

public Tea(String name, Integer milk, Boolean herbs, Integer sugar, Integer teaPowder) { this.name = name; this.milk = milk == null ? 0 : milk.intValue(); this.herbs = herbs == null ? false : herbs.booleanValue(); this.sugar = sugar == null ? 0 : sugar.intValue(); this.teaPowder = teaPowder == null ? DEFAULT_TEA_POWDER : teaPowder.intValue(); }

4. Conclusion

Dans cet article, nous avons examiné l'utilisation de la surcharge de méthode pour simuler les paramètres par défaut en Java.

Bien qu'il existe d'autres moyens d'y parvenir, la surcharge est la plus simple et la plus propre. Comme toujours, le code est disponible sur GitHub.