无法比较Java字符串中的对象是否附加到classname

时间:2013-04-18 11:32:40

标签: java

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

虽然对象相等,但比较返回false。

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

如果打印出来的话:com.salebuild.model.TechnologyProduct
而对于另一个,它打印:com.salebuild.model.TechnologyProduct_$$_javassist_71

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

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

无法找到附加此字符串的原因:_$$_javassist_71

我怎样才能克服这一点?有人可以建议吗?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

我会写这样的东西:

if (!(this instanceof TechnologyProduct))
{
    return false;
}