FindBugs beschwert sich über Mögliche Nullzeigerdereferenzierung von str1 auf Zweig, der in Comparator.compareStrings (String, String) in diesem Verfahren nicht durchführbar sein könnte:Wie kann eine Variable in diesem Codeabschnitt null sein?
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;
}
in Eclipse, habe ich auch eine Warnung auf dem letzten sehen Zeile (str1
kann null sein).
Unter welchen Umständen kann str1
sein null
in return str1.equals(str2) ? COMPARE_EQUALS : COMPARE_DIFFERS;
(vorausgesetzt, dass die ersten beiden, wenn Blöcke, um die Situationen abdecken, wenn str1
null ist)?
Es kann nicht, aber Eclipse ist nicht intelligent genug zu erzählen. – immibis
(Persönlich bevorzuge ich es, diese Warnung zu deaktivieren. Es führt zu übermäßig defensiven Code) – immibis
(Warum auch nicht einfach 'Objects.equals' verwenden?) – immibis