首页 > 解决方案 > Java:包含A类的A类的哈希码,B类包含A

问题描述

在我的类中实现哈希码函数时遇到问题。如标题中所述,我有两个课程:

我的问题来了,我被要求在两个类中实现哈希码函数。我使用的哈希码是我教过的,它是添加每个属性的哈希码,乘以一个整数,具体取决于它的类型(即乘以 31 用于字符串,17 用于 int,13 用于对象等)。

但是如果我调用A类的hashcode,那么B类的hashcode就会被调用,然后它会回调A类的hashcode。

如何摆脱这个循环?我想摆脱测试类(B)中学生类(A)hashcode的hashcode调用。但是还有其他选择吗?这是我第一次尝试寻求帮助,我希望我没有让它难以理解。

标签: java

解决方案


避免问题的一种方法是更改​​抽象。代表学校测试的类(“class A”)不必持有学生实例的引用(“class B”)。相反,它可以保存该学生的某些标识符(该学生的某些独特属性)。

另一种方式:我认为说学生不是由他们参加的测试来定义是有道理的。这意味着除了测试列表之外的所有属性都相等的两个学生实例指的是同一个学生。这意味着测试列表不应参与hashCode()equals()方法。


推荐阅读