Inhaltsverzeichnis
Kann ich in Java ein Array als Argumente an eine Methode mit variablen Argumenten übergeben?
Fallstricke bei Methoden mit variabler Arität
Übergabe von Nullwerten
Zusätzliche Argumente hinzufügen
Übergeben von Arrays von Primitive
Heim Java javaLernprogramm 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?

Dec 06, 2024 pm 04:11 PM

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

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

In Java sind variable Aritätsmethoden (Methoden mit Variablen Argumente) verwenden ein Auslassungszeichen (...), um anzugeben, dass die Methode eine variable Anzahl von Argumenten akzeptiert. Wenn Sie ein Array an eine Methode mit variabler Arität übergeben, werden die Array-Elemente als einzelne Argumente für diese Methode behandelt.

Betrachten Sie den folgenden Code:

class A {
  private String extraVar;

  public String myFormat(String format, Object... args) {
    return String.format(format, extraVar, args);
  }
}
Nach dem Login kopieren

In diesem Beispiel die myFormat-Methode Nimmt eine variable Anzahl von Argumenten (dargestellt durch ... args) und formatiert einen String mit der String.format-Methode. Das Problem besteht darin, dass args als einzelnes Object[]-Array und nicht als einzelne Argumente behandelt wird. Um dies zu beheben, können Sie die Tatsache nutzen, dass ein T... syntaktischer Zucker für ein T[] ist.

In der Java-Sprachspezifikation 8.4.1 heißt es:

„Wenn der letzte formale Parameter Ist ein variabler Aritätsparameter vom Typ T, wird davon ausgegangen, dass er einen formalen Parameter vom Typ T[] definiert. Die Methode ist dann eine variable Aritätsmethode.“

Um dies zu veranschaulichen, der folgende Code Das Snippet zeigt, wie ein Array als Argumente an eine Methode mit variabler Arität übergeben wird:

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 java.lang.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 diesem Beispiel akzeptiert die ezFormat-Methode eine variable Anzahl von Argumenten und gibt eine formatierte Zeichenfolge zurück. Da es sich bei String.format auch um eine Methode mit variabler Arität handelt, wird jedes an ezFormat übergebene Argument als einzelnes Argument für String.format behandelt.

Fallstricke bei Methoden mit variabler Arität

Übergabe von Nullwerten

Bei der Übergabe von Nullwerten an eine Methode mit variabler Arität ist es wichtig, die letzte Anweisung im Folgenden zu beachten Beispiel:

count(new Object[] { null }); // prints "1"
count((Object) null); // prints "1"
Nach dem Login kopieren

... führt zu einer NullPointerException. Um dies zu vermeiden, können Sie das Nullargument als separates Array oder als Objekt übergeben, wie folgt:

static <T> T[] append(T[] arr, T lastElement) {
    final int N = arr.length;
    arr = java.util.Arrays.copyOf(arr, N+1);
    arr[N] = lastElement;
    return arr;
}

static <T> T[] prepend(T[] arr, T firstElement) {
    final int N = arr.length;
    arr = java.util.Arrays.copyOf(arr, N+1);
    System.arraycopy(arr, 0, arr, 1, N);
    arr[0] = firstElement;
    return arr;
}
Nach dem Login kopieren

Zusätzliche Argumente hinzufügen

Um zusätzliche Argumente zu einem übergebenen Array hinzuzufügen Für eine Variable-Arity-Methode können Sie Hilfsmethoden wie append() und prepend() verwenden, um das Array zu ändern:

    int[] myNumbers = { 1, 2, 3 };
    System.out.println(ezFormat(myNumbers)); // prints "[ [I@13c5982 ]"

    Integer[] myNumbers = { 1, 2, 3 };
    System.out.println(ezFormat(myNumbers)); // prints "[ 1 ][ 2 ][ 3 ]"
Nach dem Login kopieren

Übergeben von Arrays von Primitive

Variablen-Aritätsmethoden funktionieren nur mit Referenztypen. Autoboxing gilt nicht für Arrays von Grundelementen. Um ein Array von Grundelementen zu übergeben, müssen Sie diese zunächst in ein Array ihres Wrapper-Typs konvertieren:

Das obige ist der detaillierte Inhalt vonKann ich ein Array als Argumente an eine Java-Methode mit variablen Argumenten übergeben?. 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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)