2

Java で 2 つのオブジェクトを比較しており、equals と hashcode を実装しています。

オブジェクトは等しいですが、比較は false を返します。

equals の実装では、2 つのオブジェクトのクラスが同じであるにもかかわらず、異なるものとして出力されていることがわかりました。

一方の場合は次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 に答える