java中equals的重写
时间: 2024-02-22 12:59:43 浏览: 66
1_equals_overridingequals_
在Java中,equals()方法是用来比较两个对象是否相等的。当我们创建一个自定义类时,需要根据自定义类的特点来重写equals()方法,以便在使用equals()方法时能够正确地比较两个自定义类的对象是否相等。
下面是equals()方法的一种常见的重写方式:
```
public class Person {
private String name;
private int age;
// 构造方法和get/set方法省略
@Override
public boolean equals(Object o) {
if (this == o) return true; // 如果是同一个对象,直接返回true
if (o == null || getClass() != o.getClass()) return false; // 如果对象为空或者类型不同,返回false
Person person = (Person) o; // 强制类型转换
return age == person.age && Objects.equals(name, person.name); // 比较对象的属性是否相等
}
@Override
public int hashCode() {
return Objects.hash(name, age); // 重写hashCode()方法
}
}
```
在这个例子中,我们首先判断两个对象是否是同一个对象,如果是则直接返回true;如果不是,则判断对象是否为空或者类型是否相同,如果不满足这两个条件,则将对象强制转换为Person类型,然后比较对象的属性是否相等,如果相等则返回true,否则返回false。
需要注意的是,在重写equals()方法时,也需要同时重写hashCode()方法,以保证hashCode()方法返回的哈希值与equals()方法比较的结果一致。
阅读全文