java: Generating equals/hashCode implementation but without a call to superclass, even though this class does not exte
时间: 2024-06-16 18:05:38 浏览: 181
Java中equals()与hashCode()的原理与设计
在Java中,生成equals/hashCode实现时,通常会调父类的equals/hashCode方法来确保继承自父类的属性也被考虑在内。但是,有时候我们希望只考虑当前类的属性,而不包括父类的属性。这种情况下,可以通过重写equals和hashCode方法来实现。
在重写equals方法时,可以使用Objects类的equals静态方法来比较当前类的属性,而不调用父类的equals方法。示例代码如下:
```java
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
MyClass other = (MyClass) obj;
// 比较当前类的属性
return Objects.equals(this.property1, other.property1) &&
Objects.equals(this.property2, other.property2);
}
```
在重写hashCode方法时,也可以只考虑当前类的属性,而不调用父类的hashCode方法。示例代码如下:
```java
@Override
public int hashCode() {
return Objects.hash(property1, property2);
}
```
这样就可以生成只考虑当前类属性的equals和hashCode实现。
阅读全文