Heim >Java >javaLernprogramm >Warum muss ich @SafeVarargs in Java 9 verwenden?

Warum muss ich @SafeVarargs in Java 9 verwenden?

王林
王林nach vorne
2023-09-11 23:53:02649Durchsuche

为什么在Java 9中需要使用@SafeVarargs?

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 der

privaten Methode angewendet. Daher wird keine Warnmeldung angezeigt. Beispiel

import 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen