FindBugs的抱怨str1中的分支有關可能的空指針引用,可能是在Comparator.compareStrings不可行(字符串,字符串)這個方法:在這段代碼中,變量如何能爲空?
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
爲空時)?
這不可能,但是Eclipse是沒有足夠的智慧告訴。 – immibis
(就個人而言,我更願意禁用警告這會導致過度防禦性代碼。) – immibis
(另外,爲什麼不使用'Objects.equals'?) – immibis