2

我正在比较 Java 中的两个对象,并实现了 equals 和 hashcode。

尽管对象相等,但比较返回 false。

我发现在 equals 实现中,尽管它们是相同的,但它将两个对象的类打印为不同的。

对于一个它打印:com.salebuild.model.TechnologyProduct
而对于另一个它打印:com.salebuild.model.TechnologyProduct_$$_javassist_71

所以它在 equals 方法中在这种情况下失败:

if (getClass() != obj.getClass())
{
    return false;
}

无法找到为什么要附加此字符串:_$$_javassist_71

我该如何克服呢?有人可以建议吗?

4

2 回答 2

3

用于instanceof检查两个对象是否属于同一类。

以下是 Eclipse 提供的用于检查对象相等性的代码:

public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (!(obj instanceof LdapUserDetails)) //check class here
        return false;

    // check fields for equality here
}
于 2013-04-18T11:34:12.010 回答
1

我会写这样的东西:

if (!(this instanceof TechnologyProduct))
{
    return false;
}
于 2013-04-18T11:35:33.513 回答