こんにちは、事前にすべておよびTHX @/List.containsのために等しい比較します。は、私の状況のための偉大なベストプラクティスがある場合、私は現在、不思議</p> <p>、(OBJ)
- あなたにはオブジェクトがあるとします。顧客タイプのオブジェクトを考えてみましょう。
- Customerオブジェクトには、(n-1)個のフィールドがあります。
- eclipseのコンテキストメニュー>>ソース>> hashCode()とequals()を生成して、hashCodeとequalsメソッドを実装しています... すべての(n-1)フィールドを使用します。これは一般的には実際には悪いことではありません。
特定のメソッド内の別個のサービスクラスに、Customers> List myCustomersのリストがあります。
このメソッドでは、条件myCustomers.contains(specificCustomer)を使用してif-elseのケースを実装します。
if (myCustomer.contains(specificCustomer)) {
// todo
} else {
// todo
}
したがって、list.contains(obj)は、オブジェクトのequalsメソッドを内部的に使用します。これは、リストにオブジェクトが含まれているかどうかを確認する一般的な方法です。
BUT 私の場合、標準のhashCodeとequalsはallready(n-1)フィールドで実装されています。そして、私が望むのは、オブジェクトの特定のフィールド、たとえば(n-5)フィールドだけをチェックする.contains(obj)メソッドを使用することです。
コードの他の部分がすでにこれを使用しているため、既存のhashCodeとequalsを変更したくありません。そして私がそうするなら、私はその後の行動を予測することはできません。
また、私はCustomerクラス内に別のメソッドを記述し、if-else-conditionでのみ使用することは望ましくありません。
だから、誰かがこれを行うには、アイデア、ベストプラクティスまたは素晴らしいパターンを持っていますか?
ベストプラクティスを検索しないようにしてください。 – AdamSkywalker
私の意見に基づくソリューション:N-5フィールドを使用するメソッドequalsXXXを作成し、リストを反復してequalsXXXメソッドを使用して等価性をチェックするメソッドを作成します。 – AdamSkywalker