如何重写equal方法?
时间: 2024-03-09 07:44:32 浏览: 28
在Java中,我们可以重写`equals`方法来比较两个对象的内容是否相同。默认情况下,`equals`方法比较的是对象的引用是否相等,即两个对象是否指向同一个内存地址。
重写`equals`方法的步骤如下:
1. 确定哪些属性应该被用来比较对象是否相等,这些属性可以是对象中的任何属性。
2. 在`equals`方法中使用`instanceof`关键字来检查传递给方法的对象是否是正确的类型。
3. 将传递给方法的对象强制转换为正确的类型。
4. 比较对象的属性是否相等。可以使用`Objects.equals()`方法来比较属性是否相等。
5. 如果所有属性都相等,则返回`true`,否则返回`false`。
下面是一个示例代码:
```
public class Person {
private String name;
private int age;
// constructors, getters, setters
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Person)) {
return false;
}
Person p = (Person) o;
return Objects.equals(name, p.name) &&
age == p.age;
}
}
```
在这个示例中,我们重写了`Person`类的`equals`方法,比较了`name`和`age`属性是否相等。如果两个`Person`对象的`name`和`age`属性都相等,则认为它们是相等的对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)