fas*_*ava 0 java static-analysis findbugs equals
我等于这个方法,但Findbugs报告错误,任何想法?
@Override
public boolean equals(final Object obj) {
return obj instanceof String && this.value != null
&& this.value.equals(obj); // this.value is a String
}
Run Code Online (Sandbox Code Playgroud)
错误是:
Myclass.equals(Object) 检查操作数是否为String
您对equals的实现MyClass将至少打破equals-contract的对称和反身属性:
对称:
对于任何非空引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true.
在你的情况下:
MyClass A例如,value ="a":
A.equals("a")将为true,但"a".equals(A)为false.这违反了对称属性.
反思:
对于任何非空引用值x,x.equals(x)应返回true.
但是你的实现将返回false
A.equals(A)
Run Code Online (Sandbox Code Playgroud)
但必须返回true.
等等.
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |