Heim > Java > javaLernprogramm > Können Javas Variablenargumente (Varargs) Arrays als Argumente akzeptieren?

Können Javas Variablenargumente (Varargs) Arrays als Argumente akzeptieren?

Mary-Kate Olsen
Freigeben: 2024-12-30 19:36:14
Original
261 Leute haben es durchsucht

Can Java's Variable Arguments (Varargs) Accept Arrays as Arguments?

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);
  }
}
Nach dem Login kopieren

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 ]"
}
Nach dem Login kopieren

Beachten Sie, dass String... ist entspricht String[].

Varargs Fallstricke

  • Null übergeben: Das Aufrufen einer Varargs-Methode mit nur einem Nullwert führt zu einer NullPointerException. Um einen einzelnen Nullwert zu übergeben, verwenden Sie new Object[] { null } oder (Object) null.
  • Zusätzliche Argumente hinzufügen: Um beim Übergeben eines Arrays mit varargs ein zusätzliches Argument hinzuzufügen, erstellen Sie ein neues Array, um das zusätzliche Element aufzunehmen.
  • Übergabe von Arrays von Primitiven: Varargs unterstützen nur Referenztypen. Um Werte von Grundelementen zu übergeben, konvertieren Sie sie in Arrays der entsprechenden Wrapper-Klassen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage