„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Kann ich ein Array als Argumente an eine Java -Methode mit variablen Argumenten übergeben?

Kann ich ein Array als Argumente an eine Java -Methode mit variablen Argumenten übergeben?

Gepostet am 2025-03-25
Durchsuche:453

Can I Pass an Array as Arguments to a Java Method with Variable Arguments?

kann ich ein Array als Argumente an eine Methode mit variablen Argumenten in Java übergeben? Wenn Sie ein Array an eine variable Arity -Methode übergeben, werden die Array -Elemente als individuelle Argumente für diese Methode behandelt.

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"

zusätzliche Argumente hinzufügen

, um einem Array, das an eine variable Arity -Methode übergeben wird, zusätzliche Argumente hinzuzufügen. endgültig int n = arr.length; arr = java.util.arrays.copyof (arr, n 1); arr [n] = lastElement; arr zurückgeben; } static t [] prepend (t [] arr, t FirstElement) { endgültig int n = arr.length; arr = java.util.arrays.copyof (arr, n 1); System.ArrayCopy (arr, 0, arr, 1, n); arr [0] = FirstElement; arr zurückgeben; }

ü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]"

Neuestes Tutorial Mehr>

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