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

Pourquoi dois-je utiliser @SafeVarargs dans Java 9 ?

王林
Libérer: 2023-09-11 23:53:02
avant
665 Les gens l'ont consulté

为什么在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>
Copier après la connexion

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);
   }
}
Copier après la connexion

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>
Copier après la connexion

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);
   }
}
Copier après la connexion

Sortie

<strong>[Adithya, Jaidev]
[Raja, Chaitanya]</strong>
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal