Heim > Java > javaLernprogramm > Können Java-Methoden mit variablen Argumenten ein Array als mehrere Argumente akzeptieren?

Können Java-Methoden mit variablen Argumenten ein Array als mehrere Argumente akzeptieren?

Susan Sarandon
Freigeben: 2024-12-22 21:52:10
Original
705 Leute haben es durchsucht

Can Java Methods with Variable Arguments Accept an Array as Multiple Arguments?

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

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!!!
Nach dem Login kopieren
", "[ %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 ]"
Nach dem Login kopieren

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

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!

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