我在Java中比较两个对象并实现了equals和hashcode。
虽然对象相等,但比较返回false。
我发现在equals实现中它将两个对象的类打印为不同,尽管它们是相同的。
如果打印出来的话:com.salebuild.model.TechnologyProduct
而对于另一个,它打印:com.salebuild.model.TechnologyProduct_$$_javassist_71
所以在equals方法中它在这种情况下失败了:
if (getClass() != obj.getClass())
{
return false;
}
无法找到附加此字符串的原因:_$$_javassist_71
我怎样才能克服这一点?有人可以建议吗?
答案 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;
}