SORU
27 Mayıs 2010, PERŞEMBE


Nasıl bir dize kontrol etmek için java boş karşı?

Nasıl java boş karşı bir dize kontrol edebilir miyim? Kullanıyorum

stringname.equalsignorecase(null)

ama işe yaramıyor.

CEVAP
27 Mayıs 2010, PERŞEMBE


string == null Eğer nesne null karşılaştırır. string.equals("foo") değeri içindeki nesne ile karşılaştırır. string == "foo" her zaman eğer nesneler aynı, temsil ettikleri değerler değil olup olmadığını görmek için çalışıyoruz, çünkü işe yaramaz.

Eğer bunu denerseniz, buldum gibi işe yaramaz:

String foo = null;
if (foo.equals(null)) {
    // That fails every time. 
}

Nedeni foo boş olduğunu, ne olduğunu bilmiyorlar .; nesne Var Yok için eşittir .çağrılacak gelen eşittir.

Muhtemelen istediği oldu:

String foo = null;
if (foo == null) {
    // That will work.
}

Dize ile ilgili bir null karşı kendinizi korumak için tipik bir şekilde

String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
    // Do something here.
}

Eğer foo null ise, koşullu ikinci yarısında değerlendirmek değil, ve herşey çok güzel.

Kolay yolu eğer bir Dize (değişken) yerine kullanıyorsanız,,

String foo = null;
...
if ("some String".equals(foo)) {
    // Do something here.
}

Eğer bu geçici bir çözüm bulmak istiyorsanız, Apache Commons null-güvenli Dize işlemlerini sağlayan bir sınıf- StringUtils - vardır.

if (StringUtils.equals(foo, bar)) {
    // Do something here.
}

Başka bir tepki dalga geçiyordu, ve bunu yapmak gerekir " dedi

boolean isNull = false;
try {
    stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
    isNull = true;
}

Lütfen bunu yapma. Sadece istisnai hatalar için istisnalar atmak gerekir; Eğer bir boş bekliyorsanız, bunun için kontrol edin ve İstisna atmayın.

Kafamda, bunun iki nedeni vardır. İlk olarak, özel durumlar yavaş, null karşı kontrol hızlı, ama JVM bir özel durum oluşturduğunda, çok zaman alır. İkinci olarak, kod okumak için çok daha kolaydır ve eğer sadece null işaretçi için kontrol edin eğer korumak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011
  • XxMinayaxX1

    XxMinayaxX1

    9 Mayıs 2012