重写equals的代码
时间: 2024-04-14 15:17:44 浏览: 40
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyClass myClass = (MyClass) obj;
return Objects.equals(name, myClass.name) &&
Objects.equals(age, myClass.age) &&
Objects.equals(address, myClass.address);
}
相关问题
java重写equals方法代码
下面是一个例子:
```
public class Person {
private String name;
private int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写 equals 方法
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Person)) {
return false;
}
Person other = (Person) obj;
return this.name.equals(other.name) && this.age == other.age;
}
}
```
在这个例子中,我们重写了 `equals` 方法来比较两个 `Person` 对象是否相等。我们首先判断两个对象是否是同一个对象,如果是,直接返回 `true`。接下来,我们判断传入的对象是否是 `Person` 类型,如果不是,返回 `false`。最后,我们将传入的对象强制转换成 `Person` 类型,并比较两个 `Person` 对象的 `name` 和 `age` 是否相等,如果相等,返回 `true`,否则返回 `false`。
需要注意的是,我们在重写 `equals` 方法时,还要重写 `hashCode` 方法,以保证两个相等的对象具有相同的哈希值,否则在使用哈希表等数据结构时,会出现问题。
java 重写equals和hashcode代码
重写equals方法:
```
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MyClass)) {
return false;
}
MyClass other = (MyClass) obj;
// 根据对象的属性是否相等来判断两个对象是否相等
return Objects.equals(this.property1, other.property1)
&& Objects.equals(this.property2, other.property2)
&& Objects.equals(this.property3, other.property3);
}
```
重写hashCode方法:
```
@Override
public int hashCode() {
return Objects.hash(property1, property2, property3);
}
```
以上代码中,我们使用了Objects类的equals和hash方法来比较属性是否相等。我们在equals方法中比较了所有属性,如果所有属性都相等,就判断两个对象相等。在hashCode方法中,我们使用了Objects类的hash方法来生成一个hashCode值,这个值是根据对象的属性计算得出的,如果两个对象的属性相等,那么它们的hashCode值也应该相等。
阅读全文