カスタムオブジェクトのequalsをオーバーライドし、現在のオブジェクトがId(getId)によってパラメーターに渡されたオブジェクトと等しいかどうかを確認したいと思います。どうやってやるの?ありがとう
質問する
103 次
2 に答える
1
ご提供いただいた情報だけでお答えすることは非常に困難です。しかし、大まかに次のようなものが必要です。
@Override
public boolean equals(Object o) {
if (! (o instanceof MyClass)) return false;
return id == ((MyClass)o).getId();
}
id
あなたのデータフィールド(おそらくint
)はどこにありMyClass
、あなたのクラスの名前です。
注:をオーバーライドする場合equals
は、 もオーバーライドすることを強くお勧めしますhashCode
。id
が実際に整数である場合は、hashCode
単に returnを使用することを検討してくださいid
。
于 2012-09-30T22:31:10.930 に答える
0
着信オブジェクトのタイプと「nullness」を確認する必要があります。this.id
徹底的にするために、 nullかどうかも確認する必要があります。s とs が思いObject.hashCode()
どおりに機能するように、おそらく同様にオーバーライドしたいと思うでしょう。Set
Map
@Override
public boolean equals(Object obj) {
if ((obj == null) || (!getClass().isAssignableFrom(obj.getClass()))) {
return false;
}
if (this.id == null) {
return false;
} else {
return this.id.equals((ClassName)obj.getId());
}
}
@Override
public int hashCode() {
return this.id.hashCode();
}
于 2012-09-30T22:39:22.043 に答える