Maison > Java > javaDidacticiel > Les arguments variables de Java (Varargs) peuvent-ils accepter des tableaux comme arguments ?

Les arguments variables de Java (Varargs) peuvent-ils accepter des tableaux comme arguments ?

Mary-Kate Olsen
Libérer: 2024-12-30 19:36:14
original
261 Les gens l'ont consulté

Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?

Les tableaux peuvent-ils être transmis comme arguments à des méthodes avec des arguments variables en Java ?

Considérez la méthode suivante :

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}
Copier après la connexion

L'intention est que les arguments soient transmis individuellement à String.format, mais comme myFormat traite les arguments comme Object[], il est en conflit avec le but.

Varargs de Java (Arguments variables)

Le sucre syntaxique de Java T... correspond à T[]. Selon la spécification du langage Java (JLS 8.4.1), le paramètre formel final peut être une arité variable, qui la considère comme un tableau du type spécifié. Par conséquent, les méthodes d’arité variable acceptent un nombre variable d’arguments. Les invocations de telles méthodes peuvent contenir plus d'arguments réels que de paramètres formels.

Solution

Pour obtenir le comportement souhaité, un tableau peut être transmis à une méthode avec des arguments variables. Le principe sous-jacent est que chaque objet du tableau est passé en tant qu'argument individuel.

Voici un exemple démonstratif :

public static String ezFormat(Object... args) {
    String format = new String(new char[args.length])
        .replace("", "[ %s ]");
    return String.format(format, args);
}

public static void main(String... args) {
    System.out.println(ezFormat("A", "B", "C"));
    // prints "[ A ][ B ][ C ]"
}
Copier après la connexion

Notez que String... est équivalent à String[].

Varargs Gotchas

  • Passing Null : L'invocation d'une méthode varargs avec seulement une valeur nulle entraînera NullPointerException. Pour transmettre une seule valeur nulle, utilisez new Object[] { null } ou (Object) null.
  • Ajout d'arguments supplémentaires : Pour ajouter un argument supplémentaire lors du passage d'un tableau à l'aide de varargs, créez un nouveau tableau pour accueillir l'élément supplémentaire.
  • Passer des tableaux de primitives : Varargs ne prend en charge que types de référence. Pour transmettre les valeurs des primitives, convertissez-les en tableaux de classes wrapper correspondantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal