gpt4 book ai didi

java - 奇怪的 Findbugs 错误与 equals

转载 作者:行者123 更新时间:2023-12-01 06:33:48 26 4
gpt4 key购买 nike

我有 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
}

错误是:

Myclass.equals(Object) 检查操作数是否为字符串

最佳答案

您对 MyClass 的 equals 实现至少会破坏 equals-contract 的对称和自反属性。 :

对称:

for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.

就您而言:

MyClass A 例如,值为“a”:A.equals("a") 将为 true,但 "a".equals(A) 为 false。这违反了对称性。

自反:

for any non-null reference value x, x.equals(x) should return true.

但是你的实现将返回 false

A.equals(A) 

但必须返回 true。

等等

关于java - 奇怪的 Findbugs 错误与 equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4516232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com