Maison >Java >javaDidacticiel >Pourquoi dois-je utiliser @SafeVarargs dans Java 9 ?

Pourquoi dois-je utiliser @SafeVarargs dans Java 9 ?

王林
王林avant
2023-09-11 23:53:02662parcourir

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

La fonctionnalité varargs a été introduite en Java pour faciliter la création de méthodes avec un nombre variable de paramètres sans recourir à des paramètres array type ou à des versions surchargées de la même méthode.

Avant les versions Java 9, il y avait un message d'avertissement si la méthode vararg était utilisée avec génériques. Bien que toutes les méthodes ne produisent pas de pollution en tas, le compilateur affiche un avertissement pour toutes les méthodes variadiques utilisées avec les génériques. C'est pourquoi le concept @SafeVarargs a été ajouté dans la version Java 9 pour éviter ces avertissements. Si nous ajoutons cette annotation, le compilateur arrêtera ces avertissements.

On peut compiler le code à l'aide de la commande suivante

<strong>javac -Xlint:unchecked SafeVarargsTest1.java</strong>

Dans l'exemple ci-dessous, le compilateur affiche un message d'avertissement à l'utilisateur.

Exemple

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

Output

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

Dans l'exemple ci-dessous, nous avons appliqué @SafeVarargs avant la méthode privée. Par conséquent, il n’affiche aucun message d’avertissement.

Exemple

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

Sortie

<strong>[Adithya, Jaidev]
[Raja, Chaitanya]</strong>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer