# 生成 equals() 和 hashCode() 向导

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

> **TL;DR**
> `代码 | 生成 | equals() 和 hashCode()`  或 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Alt+Insert` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Alt+Insert` (Visual Studio), `⌘ ⌃ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS))

使用此向导 [生成 equals() 和 hashCode() 方法](generating-code.html#generate-equals-hashcode)。

|  条目  |  描述  |
| --- | --- |
|  Page1  |
|  模板  |  选择预定义的 velocity 模板或点击 ![浏览按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.general.ellipsis.svg)以使用 [模板对话框](templates-dialog.html)。  |
|  在 equals() 方法中用于类类型比较，生成  |     在方法内选择生成的表达式。 将鼠标悬停在问号图标上，以打开提示框，了解每个表达式的优缺点。       instanceof 表达式        * 允许子类的实例等于超类的实例    * 允许不同子类的实例相互等同    * 避免额外的 null 检查    * 遵循 Liskov 替换原则      getClass()        * 重写生成的 equals() 方法不会违反其契约    |
|  请在可用时使用 getters  |     如果选择此复选框，将在  `equals()`  中使用 getters，而不是直接访问字段：  `getField()`  对比  `field` 。       点击   下一步   打开下一页。     |
|  第 2 页  |
|  选择要包含在 equals() 中的字段  |     请选择用于确定相等性的字段。 只有当所有这里指定的字段值相等时，每个选定字段的值才会被比较，对象才会被认为是相等的。       点击   下一步   打开下一页。     |
|  第 3 页  |
|  选择要包含在 hashCode() 中的字段  |     选择字段以生成哈希代码。 请注意，只有包含在 equals() 方法中的字段才能参与创建哈希代码。 默认情况下，会选择所有这些字段，但如果需要，您可以取消选择它们。       点击   下一步   打开下一页。     |
|  第 4 页  |
|  选择所有非空字段  |     如果任一所选字段为非原始类型以避免生成不必要的检查，则会出现此页面。 换句话说，如果选中了这些字段的复选框，则假定该字段从不具有 null 值，并且生成的方法中不会包含这样的检查。       点击   完成  完成向导并创建 equals() 和 hashCode() 方法。     |

