Ako skontrolovať, či sa môj reťazec rovná null?

Chcem vykonať nejakú akciu, len ak môj reťazec má zmysluplnú hodnotu. Tak som skúsil toto.

if (!myString.equals("")) {
doSomething
}

a toto

if (!myString.equals(null)) {
doSomething
}

a toto

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

a toto

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

a toto

if ( myString.length()>0) {
doSomething
}

A vo všetkých prípadoch môj program doSomething napriek tomu, že môj reťazec JE EMPTY. Rovná sa null. Takže, čo je s tým zlé?

DOPLNENÉ:

Našiel som príčinu problému. Premenná bola deklarovaná ako reťazec a v dôsledku toho sa null priradené tejto premennej zmenilo na "null"! Takže if (!myString.equals("null")) funguje.

if (myString != null && !myString.isEmpty()) {
  // doSomething
}

Ako ďalšiu pripomienku uvádzame, že by ste si mali byť vedomí tohto termínu v zmluve equals:

Z Object.equals(Object): Pre každú nenulovú referenčnú hodnotu x by x.equals(null) malo vrátiť false.

Spôsob porovnávania s null je použiť x == null a x != null.

Okrem toho x.field a x.method() vyhodia NullPointerException, ak x == null.

Komentáre (4)

Musíte skontrolovať, či objekt myString je null:

if (myString != null) {
    doSomething
}
Komentáre (0)

Skúste,

myString!=null && myString.length()>0
Komentáre (2)