FindBugs phàn nàn về có thể trỏ dereference null str1 trên chi nhánh đó có thể là không khả thi trong Comparator.compareStrings (String, String) trong phương pháp này:Làm thế nào một biến có thể là null trong đoạn mã này?
private static int compareStrings(final String str1, final String str2) {
if ((str1 == null) && (str2 == null)) {
return COMPARE_ABSENT;
}
if ((str1 == null) && (str2 != null)) {
return COMPARE_DIFFERS;
}
if ((str1 != null) && (str2 == null)) {
return COMPARE_DIFFERS;
}
return str1.equals(str2) ? COMPARE_EQUALS : COMPARE_DIFFERS;
}
Trong Eclipse, tôi cũng thấy một cảnh báo trên cuối cùng dòng (str1
có thể rỗng).
Trong những trường hợp nào có thể str1
là null
trong return str1.equals(str2) ? COMPARE_EQUALS : COMPARE_DIFFERS;
(nếu hai khối đầu tiên bao gồm các trường hợp, khi str1
là null)?
Nó không thể, nhưng Eclipse là không đủ thông minh để nói. – immibis
(Cá nhân, tôi muốn vô hiệu cảnh báo đó. Mã này dẫn đến mã phòng thủ quá mức) – immibis
(Ngoài ra, tại sao không sử dụng 'Objects.equals'?) – immibis