说我有自己的班级
public class MyObj { /* ... */ }
它有一些属性和方法。它没有实现 equals,也没有实现 hashCode。
一旦我们调用 equals 和 hashCode,默认实现是什么?来自对象类?它们是什么?默认等于如何工作?默认的 hashCode 将如何工作以及将返回什么? == 只会检查它们是否引用同一个对象,所以很简单,但是 equals() 和 hashCode() 方法呢?
是的,默认实现是 Object 的(一般来说;如果您从重新定义 equals 和/或 hashCode 的类继承,那么您将使用该实现)。
从文档中:
equals
Object 类的 equals 方法实现了对象上最具辨别力的可能等价关系;也就是说,对于任何非空引用值 x 和 y,此方法返回
当且仅当 x 和 y 引用同一个对象(x == y 的值为 true)时才为 true。
hashCode
在相当实用的情况下,Object 类定义的 hashCode 方法确实为不同的对象返回不同的整数。 (这通常是通过将对象的内部地址转换为整数来实现的,但 JavaTM 编程语言不需要这种实现技术。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)