2010-03-01 6 views
10

Mon code se brise sur la ligne suivante avec un NullPointerException:Pourquoi ai-je une exception NullPointerException lors de la comparaison d'une chaîne avec null?

if (stringVariable.equals(null)){ 

Avant cette déclaration, je déclare la stringvariable et le mettre à un champ de base de données.

Dans cette déclaration, j'essaie de détecter si le champ a une valeur null, mais malheureusement, il casse!

Des pensées?

+0

Vous appelez une méthode sur une variable contenant nulle. 'equals()' n'est pas spécial, il lancera quand même un NPE. –

Répondre

28

Utilisez

stringVariable == null 

Pour tester si stringVariable est null. La méthode equals (et toutes les autres méthodes) nécessite stringVariable pour ne pas être null.

5

Il n'est jamais sage d'appeler une méthode, qu'elle soit égale à() ou non, sur une variable qui peut être nulle. Voilà pourquoi on fait quelque chose comme:

if (var != null && var.method(something)) { 
    // var.method() was true 
} else { 
    // var is null or var.method is false 
} 

Dans votre cas particulier, il serait suffisant pour faire

if (stringVariable == null) { 
} 

lorsque vous travaillez avec des chaînes qu'il peut payer pour vérifier Apache Commons StringUtils.

Il est toujours avantageux de consulter les bibliothèques apache commons car elles ont beaucoup d'utilitaires optimisés (pour les chaînes, les collections, les dates et autres) qui ont tendance à être meilleurs que ceux écrits à la maison.

9

si stringvariable est déjà nul, il n'existe plus en tant qu'objet String, donc il n'aura même pas de méthode .equals! Donc, dans le cas où stringvariableest nul, ce que vous faites vraiment est null.equals(null), à quel point vous obtiendrez le NullPointerException car null n'a pas de méthode .equals().

+0

Grande explication @ Jama22 –

+0

Alors que le commentaire approuvé aide, en fait, à répondre à l '"esprit" de la question OP, (ils demandent juste "des pensées") Je crois que cette réponse se développe un peu plus sur le "pourquoi" pour aider les futurs lecteurs. – Aterxerxes

Questions connexes