我正在使用名为FindBugs的静态分析工具分析以下代码段.
if(str.equals(enum.SOMEVALUE)) {// do something};
其中str是一个String,枚举是枚举.该工具会为此代码生成以下警告,并声明
This method calls equals(Object) on two references of different class types with no common subclasses. According to the contract of equals(), objects of different classes should always compare as unequal; therefore, according to the contract defined by java.lang.Object.equals(Object), the result of this comparison will always be false at runtime.
如果我用以下代码替换上面的代码行:
if(str.equals(enum.SOMEVALUE.toString())) {// do something};
那么警告消失了.但是我不知道该工具产生的警告是否真的是真的吗?我正在修正它吗?因为我之前已经看过这样的比较,并且似乎正常工作.