重写 Java 中的 Equals 方法
在 Java 中,equals 方法是比较对象是否相等的基本工具。当您在自定义类中重写 equals 方法时,您可以定义特定标准来确定该类的两个对象是否等效。
理解问题
考虑具有姓名和年龄字段的人员类。要比较两个 Person 对象是否相等,您可以重写 equals 方法。但是,如果年龄字段是整数,则尝试使用 equals 方法进行比较时可能会遇到错误,该方法旨在比较字符串。
解决方案
要解决这个问题,可以使用相等运算符 == 来比较整数。下面是一个处理字符串和整数比较的重写 equals 方法的示例:
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj.getClass() != this.getClass()) { return false; } final Person other = (Person) obj; if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) { return false; } if (this.age != other.age) { return false; } return true; }
在此修改后的代码中:
示例用法
这里有一个示例如何使用重写的 equals 方法:
public class Main { public static void main(String[] args) { List<Person> people = new ArrayList<>(); people.add(new Person("John Doe", 30)); people.add(new Person("Jane Doe", 25)); // Check for equality using the overridden equals method boolean equal = people.get(0).equals(people.get(1)); System.out.println(equal); // Output: false } }
在此示例中, equals 方法正确判断两个不同名字和年龄的 Person 对象不相等。
以上是如何为具有字符串和整数字段的对象正确重写 Java 中的 equals() 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!