FindBugs жалуется на возможное разыменование нулевого указателя str1 на ветке, которое может быть недопустимо в Comparator.compareStrings(String, String) в этом методе:
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;
}
В Eclipse я также вижу предупреждение на последней строке (str1
может быть нулевым).
В каких обстоятельствах может str1
быть null
в return str1.equals(str2) ? COMPARE_EQUALS : COMPARE_DIFFERS;
(учитывая, что первые два блока if охватывают ситуации, когда str1
равно null)?