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
Susan SarandonOriginal
2024-12-22 21:52:10667Durchsuche

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);
  }
}

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!

Stellungnahme:
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