java - 何时覆盖 java 中的 equals 和 hashcode

标签 java

我知道有多个博客讨论“如何重写 equals 和 hashcode”以及“如果我们重写其中一个而不是另一个则会出现问题”。

我的问题很简单。在什么情况下建议覆盖 equals 和 hashcode?

最佳答案

每当您需要覆盖默认的相等概念时就执行此操作:两个对象仅当它们是同一对象时才相等。

换句话说,当两个不同的实例在某种意义上可以“相等”时。

例如,Integer 会覆盖 equals,因为 new Integer(2) != new Integer(2),但您会期望 new Integer(2).equals(new Integer(2))。直观上,表示 2 的对象应该等于表示 2 的另一个对象。

您需要同时重写 hashCode,以便您的值与基于哈希的数据结构中的 equal 实现保持一致。

关于java - 何时覆盖 java 中的 equals 和 hashcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125688/

相关文章:

java - 无法使用camel SQL组件连接到mariaDB

java - 如何使用 log4j 在 Spring Boot 中创建记录器最近 5 天的 zip 文件?

java - 如何从 MATLAB 连接到 IBM Db2 Event Store?

java - Eclipse 中是否已经安装了 WindowBuilder Pro?

java - 无法捆绑适用于 Mac 的 Java 应用程序 1.8

java - Hibernate ORM 设计策略

java - 关闭 BufferedReader()?

java - 带有通配符参数的嵌套通用容器?

java - 在java中解析字段访问标志

java - 在声音阵列中随机播放单词对