Können Arrays als Argumente an Methoden mit variablen Argumenten in Java übergeben werden?
Betrachten Sie die folgende Methode:
class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } }
Die Absicht besteht darin, dass Argumente einzeln an String.format übergeben werden, aber da myFormat Argumente als Objekt[] behandelt, kommt es zu Konflikten mit dem Ziel.
Javas Varargs (Variable Argumente)
Javas syntaktischer Zucker T... entspricht T[]. Gemäß der Java-Sprachspezifikation (JLS 8.4.1) kann der letzte formale Parameter die Variable arity sein, die ihn als Array des angegebenen Typs betrachtet. Daher akzeptieren Methoden mit variabler Arität eine variable Anzahl von Argumenten. Aufrufe solcher Methoden können mehr tatsächliche Argumente als formale Parameter enthalten.
Lösung
Um das gewünschte Verhalten zu erreichen, kann ein Array mit variablen Argumenten an eine Methode übergeben werden. Das zugrunde liegende Prinzip besteht darin, dass jedes Objekt im Array als einzelnes Argument übergeben wird.
Hier ist ein anschauliches Beispiel:
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 ]" }
Beachten Sie, dass String... ist entspricht String[].
Varargs Fallstricke
Das obige ist der detaillierte Inhalt vonKönnen Javas Variablenargumente (Varargs) Arrays als Argumente akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!