2016-07-07 49 views
2

我正在创建两个对象类的多对多映射。我是否需要编写hashCode()equals()方法;如果是这样,NetBeans自动生成代码的帮助?netbeans能否为映射自动生成正确的hashCode()和equals()方法?

+0

你只当你执行比较两个对象需要'equals'和'hashCode'。 – eatSleepCode

+0

“它需要hashcode和equals方法吗”如果你的意思是“do * I *必须实现它们”,那么这取决于你想要做什么;请参阅[为什么我需要重写Java中的equals和hashCode方法?](http://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-方法-在-java的)。 –

+0

由于您使用'ManyToMany'映射,因此您的参数之一将是对象的集合,因此从技术上讲,您将需要equals和hashcode方法。因此,您需要决定“equals”方法的实现,也许您可​​以使用生成的'hashCode'方法。 – eatSleepCode

回答

0

是的,您可以使用IDE生成的哈希码来比较两个实例。你的情况足以让你的情况更为重要的是平等的方法,注意比较平等的参数。自动生成的代码将比较所有参数,但您可能只需要几个参数来唯一标识它。

假设您需要查看从DB中读取的记录是否属于同一个实体,只需比较equals方法中的主键即可。选择平等标准完全是你的自由裁量权。

3

是的,它可以!

只需右键单击已创建对象的类,然后选择插入代码。标题为“Generate”的小菜单将弹出各种选项,其中包括equals()和hashCode(),选择它并预设,NetBeans会为您生成代码覆盖。测试一下equals方法,这次它会工作。

注意:当你选择“equals()和hashCode()”时,出现一个对话框,只需选中你想要处理的所有变量的两边框即可。见下图:

Generate equals() and hashCode on NetBeans

相关问题