Heim >Java >javaLernprogramm >Können Java-Methoden mit variablen Argumenten ein Array als mehrere Argumente akzeptieren?
Können Argumente als Array an eine Methode mit variablen Argumenten in Java übergeben werden?
Betrachten Sie die folgende gewünschte Funktion:
class A { private String extraVar; public String myFormat(String format, Object ... args) { return String.format(format, extraVar, args); } }
In diesem Szenario wird args als Object[] innerhalb der myFormat-Methode interpretiert, was dazu führt, dass ein einzelnes Argument für String.format bereitgestellt wird. Das Ziel besteht jedoch darin, dass jedes Objekt in args als eindeutiges Argument übergeben wird.
Ist es möglich?
Ja, es ist möglich, da T... ist lediglich syntaktischer Zucker für T[].
Java Language Specification (JLS) 8.4.1 definiert:
Der letzte formale Parameter in einer Liste ist speziell; Es kann sich um einen variablen Aritätsparameter handeln, der durch ein Auslassungszeichen nach dem Typ angezeigt wird.
Wenn der letzte formale Parameter ein variabler Aritätsparameter vom Typ T ist, wird davon ausgegangen, dass er einen formalen Parameter definiert vom Typ T[].
Beispiel zur Veranschaulichung der Variablenarität Parameter:
public static String ezFormat(Object... args) { String format = new String(new char[args.length]) .replace("<pre class="brush:php;toolbar:false">static void count(Object... objs) { System.out.println(objs.length); } count(null, null, null); // prints "3" count(null, null); // prints "2" count(null); // throws NullPointerException!!!", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
In der Hauptmethode ist args ein String[], der an ezFormat übergeben wird. Die Methode behandelt es aufgrund der Kovarianz als Objekt[].
Varargs-Fallstricke:
Null übergeben
int[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ [I@13c5982 ]"
Um dies zu umgehen, rufen Sie mit Object[] { null } oder (Object) auf. null.
Hinzufügen zusätzlicher Argumente zu einem Array
Um ein Array primitiver Typen zu übergeben, wickeln Sie es in ein Referenzarray ein:
Integer[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ 1 ][ 2 ][ 3 ]"
Das obige ist der detaillierte Inhalt vonKönnen Java-Methoden mit variablen Argumenten ein Array als mehrere Argumente akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!