2009-08-14 8 views
3

Es gibt eine Möglichkeit, dass dies eine doppelte Frage sein kann. Ich initialisiere eine String-Variable zu null.Ich kann es oder nicht aktualisieren es mit einem Wert. Jetzt möchte ich überprüfen, ob diese Variable ungleich Null ist und was auch immer ich versuche, bekomme ich eine Null-Zeiger-Ausnahme.Ich kann es mir nicht leisten werfen Nullpointer Ausnahme, da es costly.Is es eine Abhilfe ist, die efficient.TIA istNullpointer Ausnahme

+0

Vielleicht schauen werfen http://stackoverflow.com/questions/271526/how-to-avoid-null-statements-in-java – Artelius

+2

Zeigen Sie uns den Code. Deine Erklärung entspricht nicht meinen Erfahrungen. Aktivieren Sie auch Null-Checks im Compiler wenn möglich (zB mit Eclipse) –

+0

Forgot um den Server neu zu starten und das war das Problem. Problem gelöst –

Antwort

3

Wenn Sie

verwenden
if (x == null) 

Sie nicht eine NullPointerException bekommen.

Ich vermute, Sie tun:

if (x.y == null) 

, die werfen, weil x null ist, nicht weil x.y null ist.

Wenn dies nicht erklärt wird, geben Sie bitte den Code ein, den Sie verwenden, um auf Nichtigkeit zu prüfen.

+0

Sie haben es richtig. Ich habe die Variable y in X-Klasse als null deklariert ist nicht null. Es wird keine Ausnahme für Nicht-Null-Werte ausgelöst. –

+1

Wenn 'x' nicht null ist, dann wird' if (xy == null) 'keine' NullPointerException' werfen. –

+0

X kann nicht null sein, weil ich X.z an eine andere Funktion als Parameter übergebe, die gerade vor dieser Zeile steht, die keine Nullzeigerausnahme wirft –

1

String ist unveränderlich

@Test(expected = NullPointerException.class) 
public void testStringEqualsNull() { 
    String s = null; 
    s.equals(null); 
} 

@Test 
public void testStringEqualsNull2() { 
    String s = null; 
    TestCase.assertTrue(s == null); 
} 
+0

mit Java 1.4 keine Assertion oder Anmerkungen –

+0

Emulieren Sie es dann mit "wenn (....) neue RuntimeException werfen (" Assert Fehler .... "); –

3

Ich denke, man so etwas, tun

String s = null; 

    if (s.equals(null)) 

Sie entweder überprüfen null wie diese

if (s == null) 

Ein besserer Ansatz ist zu ignorieren die Null und nur auf den erwarteten Wert wie folgt überprüfen,

if ("Expected value".equals(s)) 

In diesem Fall ist das Ergebnis immer falsch, wenn s null ist.

+0

Ich tippte das gleiche! –

+0

Ich vergleiche s == Nur Null. Der erwartete Wert ist alles andere als null –

1

Ich vergleiche s == null nur

können Sie den Code-Schnipsel zeigen, dass Sie s == null geschrieben haben, wird nie ein NPE

+0

Sie haben Recht ... Der Grund für die Ausnahme war, dass ich ursprünglich s! = null || s verglichen habe.gleich ("") und der oder Teil warf nullpointerException.Wie auch immer ich das entfernt, aber vergessen, den Server neu zu starten. Danke für Ihre Antworten –

Verwandte Themen