默认的 .equals 和 .hashCode 如何适用于我的类?
假设我有自己的班级
public class MyObj { /* ... */ }
它具有一些属性和方法。它不实现等于,不实现哈希码。
一旦我们调用 equals 和 hashCode,默认的实现是什么?从对象类?它们是什么?默认值等于将如何工作?默认哈希代码将如何工作以及返回什么?==将只检查它们是否引用相同的对象,所以这很容易,但是 equals() 和 hashCode() 方法呢?
假设我有自己的班级
public class MyObj { /* ... */ }
它具有一些属性和方法。它不实现等于,不实现哈希码。
一旦我们调用 equals 和 hashCode,默认的实现是什么?从对象类?它们是什么?默认值等于将如何工作?默认哈希代码将如何工作以及返回什么?==将只检查它们是否引用相同的对象,所以这很容易,但是 equals() 和 hashCode() 方法呢?
从其中
一个 JVM 实现中的对象:
public boolean equals(Object object) {
return this == object;
}
public int hashCode() {
return VMMemoryManager.getIdentityHashCode(this);
}
在这两种情况下,它只是比较相关对象的内存地址。