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); } }
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 ]" }
Notez que String... est équivalent à String[].
Varargs Gotchas
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!