2010-03-01 9 views
10

Mein Code auf der folgenden Zeile bricht mit einer Nullpointer:Warum bekomme ich eine NullPointerException, wenn ich einen String mit null vergleiche?

if (stringVariable.equals(null)){ 

Zurück zu dieser Aussage, ich die stringvariable erklären und es zu einem Datenbankfeld gesetzt.

In dieser Aussage versuche ich zu erkennen, ob das Feld einen null Wert hatte, aber leider bricht es!

Irgendwelche Gedanken?

+0

Sie rufen eine Methode auf eine Variable enthält den Wert null. 'equals()' ist nicht speziell, es wird immer noch eine NPE werfen. –

Antwort

28

Verwenden

stringVariable == null 

Um zu testen, ob stringVariablenull ist.

Die equals Methode (und jede andere Methode) erfordert stringVariable nicht null sein.

5

Es ist nie klug, eine Methode, sei es equals() oder anders, auf einer Variablen aufzurufen, die null sein kann. Deshalb ist man in der Regel tut so etwas wie:

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

In Ihrem speziellen Fall ist es ausreichend wäre,

if (stringVariable == null) { 
} 

zu tun, wenn mit Strings arbeiten sie bezahlen können Apache Commons StringUtils zu überprüfen.

Es lohnt sich immer die Apache Commons Bibliotheken zu überprüfen, wie sie viele optimierte Dienstprogramme haben (für Streicher, Sammlungen, Termine und so weiter), die als solche Hause geschrieben, besser sein neigen.

9

wenn stringvariable bereits null ist, ist es nicht als String Objekt existiert nicht mehr, so wird es nicht einmal eine .equals Methode hat! Also, wenn stringvariableist Null, was Sie wirklich tun, ist null.equals(null), an diesem Punkt erhalten Sie die NullPointerException, weil null keine .equals() Methode hat.

+0

Große Erklärung @ Jama22 –

+0

Während der genehmigte Kommentar tatsächlich hilft, den "Geist" der OP-Frage zu beantworten, (sie fragen einfach nach "irgendwelche Gedanken") Ich glaube, diese Antwort erweitert ein bisschen mehr auf die "warum" um zukünftigen Lesern zu helfen. – Aterxerxes

Verwandte Themen