Debutante en java
Résolu/Fermé
A voir également:
- Resource leak 'sc' is never closed
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Jeux java itel 5360 - Forum Mobile
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
1 réponse
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
5 juil. 2015 à 11:33
5 juil. 2015 à 11:33
Bonjour,
Ce n'est qu'un avertissement, rien de bien grave.
Java s'attend à ce que tout objet qui implémente l'interface Closeable (ce qui est le cas de Scanner) appelle explicitement la méthode close() afin de libérer le flux et éviter de le garder en mémoire pour rien. C'est ce que l'on appelle une perte de ressource ("leak resource" en anglais).
Cependant, dans le cas de System.in je te déconseille de fermer le flux, car il serait ensuite impossible de le rouvrir...
Tu peux mettre une annotation sur la variable sc pour indiquer à Java d'ignorer cet avertissement dans le cas où tu manipules System.in
En revanche, si tu ouvres une autre ressource avec Scanner, par exemple un fichier, il faudra absolument fermer le flux, sinon le fichier restera ouvert pour rien.
Ce n'est qu'un avertissement, rien de bien grave.
Java s'attend à ce que tout objet qui implémente l'interface Closeable (ce qui est le cas de Scanner) appelle explicitement la méthode close() afin de libérer le flux et éviter de le garder en mémoire pour rien. C'est ce que l'on appelle une perte de ressource ("leak resource" en anglais).
Cependant, dans le cas de System.in je te déconseille de fermer le flux, car il serait ensuite impossible de le rouvrir...
Tu peux mettre une annotation sur la variable sc pour indiquer à Java d'ignorer cet avertissement dans le cas où tu manipules System.in
@SuppressWarnings("resource") // System resource should never be closed Scanner sc = new Scanner(System.in);
En revanche, si tu ouvres une autre ressource avec Scanner, par exemple un fichier, il faudra absolument fermer le flux, sinon le fichier restera ouvert pour rien.
Scanner sc = new Scanner(new File("toto.txt")); ... sc.close(); // close file "toto.txt"
5 juil. 2015 à 13:42