不可比较类型的 Equals¶
ID: java/equals-on-unrelated-types
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
Query suites:
- java-security-and-quality.qls
形式为 x.equals(y)
的调用,其中 x
和 y
具有不可比较的类型,应始终返回 false
,因为 x
和 y
的运行时类型将不同。如果两种类型不同且没有公共子类型,则它们不可比较。
建议¶
确保此类比较使用可比较类型。
示例¶
在以下示例中,第 5 行上的 equals
调用错误地引用了整个数组,而不是特定元素。因此,返回“找不到值”。
String[] anArray = new String[]{"a","b","c"}
String valueToFind = "b";
for(int i=0; i<anArray.length; i++){
if(anArray.equals(valueToFind){ // anArray[i].equals(valueToFind) was intended
return "Found value at index " + i;
}
}
return "Value not found";
参考¶
Java API 规范:Object.equals()。