重寫Java中的Equals方法
在Java中,equals方法負責判斷兩個物件是否相等。預設情況下,equals 方法比較物件引用,這不是許多自訂類別所需的行為。要重寫equals 方法並定義自訂相等語義,應遵循以下準則:
解決方案:
提供的程式碼嘗試使用equals方法比較整數欄位(年齡),此方法僅適用於字串。若要修正此問題,應將年齡欄位的相等性檢查替換為使用== 運算子的比較:
... } else { People otherPeople = (People) other; result = name.equals(other.name) && other.age == age; } ...
用法:
以下程式碼示範如何使用重寫的equals方法:
... // Add several Person objects to an ArrayList people.add(new Person("Subash Adhikari", 28)); people.add(new Person("K", 28)); people.add(new Person("StackOverflow", 4)); people.add(new Person("Subash Adhikari", 28)); // Compare each pair of Person objects using the overridden equals method for (int i = 0; i < people.size() - 1; i++) { for (int y = i + 1; y <= people.size() - 1; y++) { boolean check = people.get(i).equals(people.get(y)); System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName()); System.out.println(check); } } ...
此程式碼將產生以下內容輸出:
-- Subash Adhikari - VS - K false -- Subash Adhikari - VS - StackOverflow false -- Subash Adhikari - VS - Subash Adhikari true -- K - VS - StackOverflow false -- K - VS - Subash Adhikari false -- StackOverflow - VS - Subash Adhikari false
此輸出示範了重寫的 equals 方法根據名稱和年齡欄位正確比較 Person 物件。
以上是如何正確重寫 Java 中的 equals() 方法以進行自訂物件比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!