has already been given sorusunun açık yanıtı, ancak burada doğrudan bir yanıt olmayan bir uyarı var: obj.equals
, eğer obj null ise başarısız olabilir. Yani sık sık böyle bir kod kullanmak gerekecektir: mystr1 null ise bu
if(mystr1.equals(mystr2))
bir NullPointerException ile başarısız olur
if(mystr1 != null && mystr1.equals(mystr2))
çünkü.
bu nedenle diye, karşılaştırma dize bilinen sabit aşağıdaki sözdizimi sıklıkla kullanılır olduğunda:
if("ABCDEF".equals(mystr1))
ziyade bu nedenle
if(mystr1.equals("ABCDEF"))
daha birçok kütüphaneler (
apache commons/lang benzeri) Bu denetimleri birleştiren yardımcı işlevler sağlayın:
// this is the definition of org.apache.commons.lang.StringUtils.equals(String, String)
public static boolean equals(String str1, String str2) {
return str1 == null ? str2 == null : str1.equals(str2);
}
// this is the definition of org.apache.commons.lang.ObjectUtils.equals(Object, Object)
public static boolean equals(Object object1, Object object2) {
if (object1 == object2) {
return true;
}
if ((object1 == null) || (object2 == null)) {
return false;
}
return object1.equals(object2);
}
Bu yöntemlerin kullanılması genellikle iki düzlemden birinin,
Kesinlikle Eclipse için Findbugs kullanımı ikinci olurdum .... bu küçük tür kodlama sorunları yakalamak için bir tanrıça olmuştur! – mikera
hepsi bu özellikle, hudson gibi sürekli entegrasyon sunucusu üzerinde birlikte kullanıldığında (insanların gerçekten sonuçlara bakması şartıyla :-)) –
bunlardan herhangi birinin düzenleme zamanında çalışıp çalışmadığını biliyor musunuz? biz zaten bunların bir kısmı gece yapımlarının bir parçası olarak çalışıyoruz ve rapor dosyaları oluşturuyoruz. Yazarken hata/uyarıyı vurgulayan bir şey istiyorum. –