Java.lang.NullPointerException sur un attribut d'un objet statiq
Résolu/Fermé
YoMan!
-
Modifié par KX le 31/12/2014 à 07:28
YoMan! Messages postés 3 Date d'inscription mercredi 31 décembre 2014 Statut Membre Dernière intervention 31 décembre 2014 - 31 déc. 2014 à 10:43
YoMan! Messages postés 3 Date d'inscription mercredi 31 décembre 2014 Statut Membre Dernière intervention 31 décembre 2014 - 31 déc. 2014 à 10:43
A voir également:
- Java.lang.NullPointerException sur un attribut d'un objet statiq
- Vente objet occasion entre particulier - Guide
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, …) pour y découvrir le nom d'un objet. ✓ - Forum Études / Formation High-Tech
- Objet requis vba - Forum VB / VBA
- Objet rare akinator ✓ - Forum Loisirs / Divertissements
- Lancez l'application. envoyez ce mail à manon (manon@pixmail.org) en mettant en copie nina (nina@pixmail.org) : objet : colis bonjour, votre colis est arrivé. que répond manon ? ✓ - Forum Loisirs / Divertissements
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
31 déc. 2014 à 07:33
31 déc. 2014 à 07:33
Bonjour,
Avec ton code partiel on ne peut pas faire grand chose, tu dis que nextAvaibility est null, c'est donc que tu as changé sa valeur après sa création.
Remarque : lorsqu'une exception est levée, la trace de la pîle d'appel permet d'identifier sur quelles lignes de code ça plante, cette information est très utile pour corriger.
Avec ton code partiel on ne peut pas faire grand chose, tu dis que nextAvaibility est null, c'est donc que tu as changé sa valeur après sa création.
Remarque : lorsqu'une exception est levée, la trace de la pîle d'appel permet d'identifier sur quelles lignes de code ça plante, cette information est très utile pour corriger.
31 déc. 2014 à 09:47
31 déc. 2014 à 10:06
nextAvailability==null, dans ce cas ça veut dire qu'il a été modifié depuis son constructeur (ligne 3)
S'il est normal que nextAvailability puisse prendre la valeur null alors il faut faire un if pour tester ce cas afin de ne pas faire d'appel de méthodes derrière.
soustract(start)==null, je ne sais pas comment fonctionne la méthode soustract, mais il est possible qu'elle renvoie null, là aussi il faut tester le cas pour être complet.
public boolean isSoonAvailable(LogicalDateTime start) { if (start==null) return ?; // ou throw new IllegalArgumentException ou autre if (nextAvailability==null) return ?; // ou throw new IllegalStateException ou autre ? x = nextAvailability.soustract(start); if (x==null) return ?; // ou throw new ArithmeticException ou autre ? y = LogicalDuration.ofMinutes(20); if (y==null) return ?; // ou throw new ArithmeticException ou autre return x.compareTo(y) <= 0; }Remarque : il faut généralement éviter ce que l'on appelle les "valeurs magiques" comme ton 20 ici.
Il vaut mieux mettre cette valeur dans une constante ou dans un paramètre, voir les deux.
private static final int DEFAULT_DELAY = 20; // mn ? boolean isSoonAvailable(LogicalDateTime start, int delayInMinutes) { ... ? y = LogicalDuration.ofMinutes(delayInMinutes); ... } public boolean isSoonAvailable(LogicalDateTime start) { return isSoonAvailable(start, DEFAULT_DELAY); }31 déc. 2014 à 10:36
31 déc. 2014 à 10:39
31 déc. 2014 à 10:43