Null pointer Exception de la Chaîne de valeur null
if( currentTimeslot.isEmpty()){
System.out.println("Do stuff");
}
Comment puis-je obtenir un NullPointerException
? Comment puis-je vérifier si une chaîne est NULL
et faire des trucs si elle est? Chaque fois que currentTimeslot
est égal à NULL
je reçois le message d'erreur. Ici est le message de la console:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at PM.ui.MainFrame.getJPanelTopMenu(MainFrame.java:382)
Quelle langue est-ce?
c'est le langage java
c'est le langage java
OriginalL'auteur Blaiz | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
Essayez ce qui suit
OriginalL'auteur Obl Tobl
Vous êtes probablement à nouveau à Java, En Java, un objet peut être à null, ce qui signifie
pas de méthodes sont accessibles sur cet Objet, ainsi NullPointerException seront jetés chaque fois que vous essayez d'accéder à une méthode d'un Objet null.
Pour résoudre ce problème, vous devez vérifier que l'Objet n'est pas nulle par
Depuis tous les objet Java s'étend à partir de java.lang.Objet cette case est pertinente pour tout type de non seulement la Chaîne.
OriginalL'auteur Uri Lukach
Une chose importante à vous poser: Êtes -
null
et vide logiquement équivalent de ce que vous faites?Si oui, vous pourriez utiliser ce:
Si la première moitié de cette déclaration, qui évalue à
true
, Java ne dérange pas avec la seconde moitié, vous protégeant ainsi de l'null pointer exception.Une autre approche serait de normaliser vos données; si vous voulez
null
et une chaîne vide pour être considérés comme une même chose, il suffit de faire quelque chose de ce genre au début du code:Maintenant, vous n'avez pas à défensivement null-vérifier chaque fois que vous l'utilisez.
Pourquoi vous obtenez une exception: en Java, tous les objets (toute variable qui n'est pas un type primitif comme
int
,boolean
, etc.) estnull
jusqu'à ce que vous initialiser*. Si vous essayez d'accéder à toutes les méthodes ou les champs de cet objet, vous obtiendrez un null pointer exception parce que vous êtes de demander le code pour accéder à quelque chose qui n'existe pas encore. En Java, vous voulez vous assurer que vos objets sont initialisées à quelque chose tôt ou de faire beaucoup de défensive null vérification (soit avecif (variable != null) { ... }
outry { ... } catch (NullPointerException npe) { ... }
blocs) pour empêcher exactement le problème que vous rencontrez.*-- L'initialiser avec autre chose que
null
, bien sûr.NullPointerException
peut masquer l'erreur d'origine, causant d'autres, plus subtiles, des problèmes plus tard. Voir Stricte des Exceptions sur la DGM et de voir Mauvaise gestion des Erreurs: le Programme de Captures NullPointerException sur HP Fortify Taxonomie: Logiciel des Erreurs de Sécurité.Dépend de ce que vous remplissez pour "...". Et je honnêtement être plus préoccupés par
NullPointerException
attraper une erreur DIFFÉRENTE de ce à quoi je m'attendais. (Par exemple, je l'ai configuré pour gérer objectA nul, mais c'est en fait objectB jeter de l'erreur.) J'ai essayé de couvrir toutes mes bases de NPE dans les options, mais ouais, j'avais le rang de troisième meilleure option derrière normalisation de vos données et si les blocs de variables spécifiques, précisément pour ces raisons.OriginalL'auteur BlairHippo
La commande
currentTimeslot.isEmpty()
est la même chose aveccurrentTimeslot.equals("")
, ce qui n'est PAS considérée comme nulle, c'est juste vide. Si vous voulez vérifier si c'est nul ou c'est emptly, vous devez mettre une si-cas dans l'autre, comme ceci:Si les commandes que vous souhaitez mettre sont nombreux à les copier deux fois, vous pouvez les placer dans une fonction et l'appel de la fonction, ou vous pouvez également utiliser une variable booléenne qui devient vrai dans les deux cas, et de vérifier ensuite si la variable booléenne est vraie pour faire le reste des commandes, comme ceci:
Espère que cela aide 🙂
OriginalL'auteur missrg
Si vous obtenez une exception de pointeur null, ce pourrait être parce currentTimeslot est null.
Donc, vous devriez d'abord vérifier si c'est non nul, et puis appeler une de ses méthodes:
OriginalL'auteur Jair Reina
Je vous suggère de laisser aller de la plupart chaîne vide et nul tests. Apache Commons Lang StringUtils résolu la plupart de manipulation de chaîne (est nulle, est vide n'est pas vide, tout est vide, etc.) il y a longtemps.
Télécharger apache commons lang et l'utiliser.
Votre code ressemblera à ceci:
OriginalL'auteur DwB