Heim >Java >javaLernprogramm >Warum muss ich @SafeVarargs in Java 9 verwenden?
Die Funktion „varargs“ wurde in Java eingeführt, um die Erstellung von Methoden mit einer variablen Anzahl von Parametern zu erleichtern, ohne auf Parameter vom Typ „Array“ oder überladene Versionen derselben Methode zurückgreifen zu müssen. Vor Java 9-Versionen gab es eine Warnmeldung, wenn die
vararg-Methode mit Generika verwendet wurde. Obwohl nicht alle Methoden eine Haufenverschmutzung erzeugen, zeigt der Compiler eine Warnung für alle variadischen Methoden an, die mit Generika verwendet werden. Aus diesem Grund wurde in der Java 9-Version das @SafeVarargs-Konzept hinzugefügt, um diese Warnungen zu vermeiden. Wenn wir diese Anmerkung hinzufügen, stoppt der Compiler diese Warnungen. Wir können den Code mit dem folgenden Befehl kompilieren: <strong>javac -Xlint:unchecked SafeVarargsTest1.java</strong>
Im folgenden Beispiel zeigt der Compiler dem Benutzer eine Warnmeldung an.
Beispiel
import java.util.Arrays; import java.util.List; public class SafeVarargsTest1 { public static void main(String args[]) { SafeVarargsTest1 test = new SafeVarargsTest1(); test.<strong>varargsMethod</strong>(<strong>Arrays.asList</strong>("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya")); } private void varargsMethod(<strong>List<String></strong>... list) { for(List list1: list) System.out.println(list1); } }
Ausgabe
<strong>SafeVarargsTest.java:7: warning: [unchecked] unchecked generic array creation for varargs parameter of type List[] test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya")); ^ SafeVarargsTest.java:9: warning: [unchecked] Possible heap pollution from parameterized vararg type List private void varargsMethod(List... list) { ^ 2 warnings</strong> <strong>[Adithya, Jaidev] [Raja, Chaitanya]</strong>Im folgenden Beispiel haben wir
@SafeVarargs
vor derprivaten Methode angewendet. Daher wird keine Warnmeldung angezeigt. Beispielimport java.util.Arrays;
import java.util.List;
public class SafeVarargsTest2 {
public static void main(String args[]) {
SafeVarargsTest2 test = new SafeVarargsTest2();
test.<strong>varargsMethod</strong>(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
}
<strong>@SafeVarargs</strong>
private void varargsMethod(<strong>List<String></strong>... list) {
for(List list1: list)
System.out.println(list1);
}
}
Ausgabe
<strong>[Adithya, Jaidev] [Raja, Chaitanya]</strong>
Das obige ist der detaillierte Inhalt vonWarum muss ich @SafeVarargs in Java 9 verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!