Ne peut pas vérifier si l'int est null
Je suis en train d'utiliser un dictionnaire. Chaque fois que je veux vérifier si un élément est présent dans le dictionnaire, je fais ceci:
int value = results.get("aKeyThatMayOrMayNotBePresent");
if (value != null)
//...
Mais alors le compilateur me dit que je ne peux pas comparer un int
à un <nulltype>
. Quelle est la bonne façon de vérifier null
dans ce cas?
OriginalL'auteur Pieter | 2010-10-30
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la comparaison d'une valeur primitive (int) à null. Depuis primitives ne peut pas être null, vous devez utiliser un objet correspondant, par exemple Integer dans ce cas. Donc, vous devriez écrire
OriginalL'auteur darioo
Votre null check est trop tard.
Cette ligne déjà convertit la référence à une primitive
int
. Il va lancer une exception NullPointerException si la valeur de retour de " get est null.La bonne façon serait d'utiliser
Integer
au lieu deint
.De cette façon, la valeur ne sera pas un type primitif et vos null vérifier s'il est valide.
OriginalL'auteur josefx
int est un type primitif; vous pouvez comparer un
java.lang.Integer
à null.OriginalL'auteur duffymo
Vous devez utiliser
Map
au lieu deDictionnaire
,Dictionary
est obsolète.Avec
Map
vous pouvez utilisercontainsKey()
au lieu de cela, ce qui à mon avis est plus lisible:Dans mon expérience, ce n'est pas plus lent que votre approche, en dépit de l'apparente double accès à la carte. Si c'est exécutée assez souvent pour des performances à la question, alors il est optimisé loin.
OriginalL'auteur starblue
Obtenir le
Object
et vérifier si c'est null.OriginalL'auteur Peter Alexander