


Kann ich ein Array als Argumente an eine Java-Methode mit variablen Argumenten übergeben?
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); } }
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!!!
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"
... 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; }
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 ]"
Ü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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

