Par exemple:
javac Foo.java Remarque: Foo.java utilise des opérations non contrôlées ou non sécurisées. Remarque: recompiler avec -Xlint: non cochée pour plus de détails.
Par exemple:
javac Foo.java Remarque: Foo.java utilise des opérations non contrôlées ou non sécurisées. Remarque: recompiler avec -Xlint: non cochée pour plus de détails.
Cela vient en Java 5 et, plus tard, si vous êtes à l'aide de collections sans spécificateurs de type (par exemple, Arraylist()
au lieu de ArrayList<String>()
). Cela signifie que le compilateur ne peut pas vérifier que vous êtes à l'aide de la collection dans un type de manière sûre, à l'aide de médicaments génériques.
Pour se débarrasser de l'avertissement, juste être précis sur ce type d'objets que vous voulez enregistrer dans la collection. Ainsi, au lieu de
List myList = new ArrayList();
utilisation
List<String> myList = new ArrayList<String>();
Dans Java 7, vous pouvez raccourcir générique instanciation en utilisant l'Inférence de Type.
List<String> myList = new ArrayList<>();
Si vous faites ce qu'il suggère et recompiler avec le "-Xlint:décoché" de l'interrupteur, il vous donnera des informations plus détaillées.
Ainsi que l'utilisation de matières premières des types (tels que décrits par les autres réponses), un unchecked conversion peut aussi causer de l'avertissement.
Une fois que vous avez compilé avec-Xlint, vous devriez être en mesure de retravailler votre code afin d'éviter l'avertissement. Ce n'est pas toujours possible, en particulier si vous êtes à l'intégration avec l'héritage de code qui ne peut être changé. Dans cette situation, vous pouvez décider de supprimer l'avertissement dans des endroits où vous savez que le code est correct:
@SuppressWarnings("unchecked")
public void myMethod()
{
//...
}
Par exemple, lorsque vous appelez une fonction qui renvoie Generic Collections et que vous ne spécifiez pas les paramètres génériques vous-même.
pour une fonction
List<String> getNames()
List names = obj.getNames();
va générer cette erreur.
Pour le résoudre, il suffit d'ajouter les paramètres
List<String> names = obj.getNames();
L'avertissement "opérations non contrôlées ou non sécurisées" a été ajouté lorsque java a ajouté Generics , si je me souviens bien. Il vous demande généralement d'être plus explicite sur les types, d'une manière ou d'une autre.
Par exemple. le code ArrayList foo = new ArrayList();
déclenche cette exception car javac recherche ArrayList<String> foo = new ArrayList<String>();
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.