Betrachten Sie den folgenden Code: Klasse A { private String -Extravar; public String myFormat (String -Format, Objekt ... args) { return string.format (Format, extravar, args); } }
In diesem Beispiel nimmt die MyFormat -Methode eine variable Anzahl von Argumenten (dargestellt durch die ... Argumente) und formatiert eine Zeichenfolge mit der String.Format -Methode. Das Problem ist, dass Args eher als einzelnes Objekt [] als als individuelle Argumente behandelt werden. Um dies anzusprechen, können Sie die Tatsache nutzen, dass ein t ... syntaktischer Zucker für ein t [].
class A { private String extraVar; public String myFormat(String format, Object... args) { return String.format(format, extraVar, args); } }
Wenn der letzte formale Parameter eine variable Artenparameter vom Typ t ist, wird eine formale Parameter von Typ t []. Dies zeigt, dass der folgende Code -Snippet zeigt, wie ein Array als Argumente an eine variable Arity -Methode übergeben wird:
public static String ezformat (Objekt ... args) { String format = new String (new char [args.length]). Ersetzen ("\ 0", "[ %s]"); return String.Format (Format, Args); } public static void main (String ... args) { System.out.println (ezformat ("a", "b", "c")); // druckt "[a] [b] [c]" }
In diesem Beispiel nimmt die ezFormat -Methode eine variable Anzahl von Argumenten an und gibt eine formatierte Zeichenfolge zurück. Weil String.format auch eine variable Arity -Methode ist, wird jedes an ezformat übergebene Argument als individuelles Argument für String.format behandelt. Beispiel:
static void count (Objekt ... objs) { System.out.println (objs.length); } Graf (NULL, NULL, NULL); // Drucke "3" count (null, null); // Drucke "2" Graf (null); // wirft java.lang.nullpointerexception aus !!!
public static String ezFormat(Object... args) { String format = new String(new char[args.length]).replace("\0", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
count (neues Objekt [] {null}); // Drucke "1" count ((Objekt) null); // druckt "1"
übergeben Arrays von Primitiven
static void count(Object... objs) { System.out.println(objs.length); } count(null, null, null); // prints "3" count(null, null); // prints "2" count(null); // throws java.lang.NullPointerException!!!
int [] mynumbers = {1, 2, 3}; System.out.println (ezformat (mynumbers)); // druckt "[[i@13c5982]" Integer [] mynumbers = {1, 2, 3}; System.out.println (ezformat (mynumbers)); // druckt "[1] [2] [3]"
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3