Varargs en Java

Varargs en Java

1. introduction

Varargs ont été introduits dansJava 5 et fournissent un raccourci pour les méthodes qui prennent en charge un nombre arbitraire de paramètres d'un type.

Dans cet article, nous allons voir comment nous pouvons utiliser cette fonctionnalité Java principale.

2. AvantVarargs

Avant Java 5, chaque fois que nous voulions passer un nombre arbitraire d'arguments, nous devions passer tous les arguments d'un tableau ou implémenter N méthodes (une par paramètre supplémentaire):

public String format() { ... }

public String format(String value) { ... }

public String format(String val1, String val2) { ... }

3. Utilisation deVarargs

Varargs nous aide à éviter d'écrire du code standard en introduisant la nouvelle syntaxe qui peut gérer automatiquement un nombre arbitraire de paramètres - en utilisant un tableau sous le capot.

Nous pouvons les définir en utilisant une déclaration de type standard, suivie par des points de suspension:

public String formatWithVarArgs(String... values) {
    // ...
}

Et maintenant, nous pouvons appeler notre méthode avec un nombre arbitraire d'arguments, comme:

formatWithVarArgs();

formatWithVarArgs("a", "b", "c", "d");

Comme mentionné précédemment,varargs are arrays so we need to work with them just like we’d work with a normal array.

4. Règles

Varargs sont simples à utiliser. Mais il y a quelques règles que nous devons garder à l'esprit:

  • Chaque méthode ne peut avoir qu'un seul paramètrevarargs

  • L'argumentvarargs doit être le dernier paramètre

5. Utilisation sûre de Varargs

L'utilisation devarargs peut conduire à ce que l'on appelle desHeap Pollution.

En termes simples, cela signifie que Java traite lesvarargs comme des instancesObject génériques, ce qui peut conduire à desClassCastException plus tard.

Cela ne signifie pas quevarargs ne sont pas sûrs. C'est sûr lorsque vous travaillez avec un type concret commeString, mais l'utilisation de génériques n'est peut-être pas si simple.

Comme il existe un risque potentiel d'exception fatale à l'exécution, le compilateur Java ou notre IDE peut afficher un avertissement comme celui-ci:

warning: [varargs] Possible heap pollution from parameterized vararg type T

Si nous nous assurons que la méthode elle-même n'effectue pas de transformations malignes ou de conversion de type, nous pouvons utiliser@SafeVarargs pour supprimer l'avertissement.

6. Conclusion

Varargs peut faire disparaître beaucoup de passe-partout en Java.

Et, grâce à leursautoboxing implicites vers et depuisArray,, ils jouent un rôle dans la vérification future de notre code.

Comme toujours, tous les exemples de code de cet article peuvent être disponibles dans nosGitHub repository.