java - 实现相同接口的类的 hashCode
问题描述
我有(至少)两个实现相同接口并具有相同字段的类。如果这两个类的字段相同或应该不同,是否可以使用相同的哈希码?这段代码可以吗?
interface Base { }
class A implements Base {
private Integer value;
public A(Integer value) { this.value = value; }
public int hashCode() { return value.hashCode(); }
}
class B implements Base {
private Integer value;
public B(Integer value) { this.value = value; }
public int hashCode() { return value.hashCode(); }
}
解决方案
我遇到过类似的情况。基本上,实现(我有两个)看起来完全一样。
如果我只使用了一个类,那么当在另一个地方使用时,类名会造成混乱。因此,我继续进行了两个课程以提高可读性。
示例:使用的钩子pre
和post
某些东西的初始化导致创建两个类PreInit
和PostInit
. 但是,当时的要求是在初始化前和初始化后做同样的事情。但是,在不久的将来,这种情况会发生变化,每个人都会有不同的逻辑。
两个不同的对象可以有相同的哈希码,这没有什么问题(只要你照顾好equals
)
请参阅: 具有相同哈希码的两个不相等对象
推荐阅读
- python - pyspark线程池执行器日志管理
- java - 为动态按钮添加基本的点击动画
- android - 在数据库和实体列中添加类型转换器后,无法在房间数据库中保存整数列表
- reactjs - React 渲染 instagram 提要和循环评论/喜欢
- python - 如何使用 python 从 Azure Function Blob Trigger 获取多个输出?即“引入一个循环,而不是定义这么多的输出块”
- c++ - 在编译时检查字符串的出现
- php - Symfony 中每个邮件传输的不同全局发件人
- automation - 测试 NG 中的数据提供程序,具有 100 行和多列
- string - 计数和搜索字符串
- mongodb - 查询嵌套结构