Parfois, en examinant le code, je vois que de nombreuses méthodes spécifient une annotation :
@SuppressWarnings("unchecked")
Qu'est-ce que cela signifie ?
Parfois, en examinant le code, je vois que de nombreuses méthodes spécifient une annotation :
@SuppressWarnings("unchecked")
Qu'est-ce que cela signifie ?
Parfois, les génériques Java ne vous permettent tout simplement pas de faire ce que vous voulez, et vous devez effectivement dire au compilateur que ce que vous faites est vraiment se être légal au moment de l'exécution.
Je trouve généralement cela pénible lorsque je simule une interface générique, mais il existe d'autres exemples. Il vaut généralement la peine d'essayer de trouver un moyen d'éviter l'avertissement plutôt que de le supprimer (la fonction FAQ sur les génériques Java aide ici) mais parfois, même s'il est possible, cela déforme tellement le code que la suppression de l'avertissement est plus propre. Dans ce cas, ajoutez toujours un commentaire explicatif !
La même FAQ sur les génériques comporte plusieurs sections sur ce sujet, à commencer par les suivantes "Qu'est-ce qu'un avertissement "non vérifié" ?" - cela vaut la peine d'être lu.
Dans certains cas, vous pouvez l'éviter en utilisant YourClazz.class.cast(). Fonctionne pour les conteneurs à élément générique unique, mais pas pour les collections.
Il s'agit d'une annotation permettant de supprimer les avertissements de compilation concernant les opérations génériques non vérifiées (pas les exceptions), telles que les castings. Elle implique essentiellement que le programmeur ne souhaite pas être averti de ces opérations dont il est déjà conscient lors de la compilation d'un bout de code particulier.
Vous pouvez en savoir plus sur cette annotation spécifique ici :
En outre, Oracle fournit une documentation didactique sur l'utilisation des annotations ici :
Comme ils l'ont dit,
"L'avertissement 'non vérifié' peut se produire lors de l'interfaçage avec du code hérité écrit avant l'avènement des génériques (abordé dans la leçon intitulée Génériques)."
Cela pourrait également signifier que la version actuelle du système de type Java n'est pas assez bonne pour votre cas. Il y a eu plusieurs Propositions de JSR / hacks pour résoudre ce problème : Tapez les jetons, Jetons Super Type , Class.cast().
Si vous avez vraiment besoin de cette suppression, réduisez-la autant que possible (par exemple, ne la mettez pas sur la classe elle-même ou sur une longue méthode). Un exemple :
public List<String> getALegacyListReversed() {
@SuppressWarnings("unchecked") List<String> list =
(List<String>)legacyLibrary.getStringList();
Collections.reverse(list);
return list;
}
El SuppressWarning est utilisée pour supprimer les avertissements du compilateur pour l'élément annoté. Plus précisément, l'élément unchecked
permet de supprimer les avertissements du compilateur générés à la suite de castings de types non vérifiés.
Votre lien SupressWarning est mort ; voici une alternative : docs.oracle.com/javase/specs/jls/se6/html/
Vous pouvez supprimer les avertissements du compilateur et dire aux génériques que le code que vous avez écrit est légal selon eux.
Exemple :
@SuppressWarnings("unchecked")
public List<ReservationMealPlan> retreiveMealPlan() {
List<ReservationMealPlan> list=new ArrayList<ReservationMealPlan>();
TestMenuService testMenuService=new TestMenuService(em, this.selectedInstance);
list = testMenuService.getMeal(reservationMealPlan);
return list;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.