Cet avertissement est là parce que Java ne stocke pas les informations de type réellement à l'exécution dans un objet qui utilise des génériques. Ainsi, si object
est en fait un List<String>
, il n'y aura pas ClassCastException
lors de l'exécution, sauf jusqu'à ce qu'un élément soit accédé de la liste qui ne correspond pas au type générique défini dans la variable.
Cela peut entraîner d'autres complications si des éléments sont ajoutés à la liste, avec cette information de type générique incorrecte. Tout code contenant toujours une référence à la liste mais avec les informations de type générique correct aura maintenant une liste incohérente.
Pour supprimer l'avertissement, essayez:
List<?> list = (List<?>) object;
Cependant, notez que vous ne serez pas en mesure d'utiliser certaines méthodes telles que ajouter parce que le compilateur ne sait pas si vous essayez d'ajouter un objet de type incorrect. Ce qui précède fonctionnera dans beaucoup de situations, mais si vous devez utiliser add, ou une méthode similaire restreinte, vous aurez juste à subir le soulignement jaune dans Eclipse (ou une annotation SuppressWarning
).
Si vous voulez vous débarrasser du soulignement jaune dans Eclipse, mais que vous ne voulez pas ajouter '@ SuppressWarning', vous avez la possibilité d'ignorer l'avertissement dans les préférences. Dans la fenêtre des préférences, allez dans _Java> Compilateur> Erreurs/Avertissements_, puis dans la section _Generic types_, changez l'option ** Opération de type générique non cochée ** en ** Ignorer ** – Axel