Dizemin null'a eşit olup olmadığını nasıl kontrol edebilirim?

SADECE dizem anlamlı bir değere sahipse bazı eylemler gerçekleştirmek istiyorum. Bu yüzden şunu denedim.

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

ve bu

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

ve bu

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

ve bu

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

ve bu

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

Ve her durumda programım, dizemin BOŞ OLDUĞU gerçeğine rağmen bir şey yapıyor. Bu nulla eşittir. Peki, bunun nesi yanlış?

EKLENDİ:

Sorunun nedenini buldum. Değişken bir string olarak bildirilmişti ve sonuç olarak bu değişkene atanan null, "null"! Yani, if (!myString.equals("null")) çalışıyor.

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

Ek bir yorum olarak, "eşitler" sözleşmesindeki bu terimin farkında olmalısınız:

From Object.equals(Object): gt;Null olmayan herhangi bir x referans değeri için, x.equals(null) 'false' döndürmelidir.

nullile karşılaştırmanın yolux == nullvex != null` kullanmaktır.

Ayrıca, x == null ise x.field ve x.method() NullPointerException atar.

Yorumlar (4)

myStringnesnesininnull` olup olmadığını kontrol etmeniz gerekir:

if (myString != null) {
    doSomething
}
Yorumlar (0)

Dene,

myString!=null && myString.length()>0
Yorumlar (2)