重写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中文网其他相关文章!