生成代码
IntelliJ IDEA 提供多种生成常用代码构造和重复元素的方法,帮助您提高生产力。 这些可以是创建新文件时使用的 文件模板 、根据上下文不同应用的自定义或预定义 实时模板 、各种包装器或字符的自动配对。
此外,IntelliJ IDEA 提供 代码补全和 Emmet支持。
这里有一段视频演示了如何在 IntelliJ IDEA 中生成各种代码结构:
生成构造函数
IntelliJ IDEA 可以生成一个构造函数,该构造函数使用相应参数的值来初始化特定类字段。
为类生成构造函数
在主菜单中,转到 代码 并选择 生成 (Alt+Insert)。
在 生成 弹出窗口中,点击 构造函数。
如果类包含字段,请选择要由构造函数初始化的字段,然后点击 OK。
以下代码片段显示了为类生成构造函数的结果:
生成委托方法
IntelliJ IDEA 可以生成将行为委托给您类的字段或方法的方法。 这种方法使得在不直接暴露字段或方法的情况下,可以访问字段或方法的数据。
为类生成委托方法
在主菜单中,转到 代码 并选择 生成 (Alt+Insert)。
在 生成 弹出窗口中,点击 委托方法。
选择目标字段或方法,然后点击 OK。
选择您希望委托的方法,然后点击 OK。
以下代码片段显示了在另一个类中委托 get(i) 方法和 Calendar 类的结果:
生成 equals() 和 hashCode() 方法
Java 超类 java.lang.Object 提供了两种用于比较对象的方法:
public boolean equals(Object obj)返回true如果传递给它作为参数的对象与调用此方法的对象 相等。 默认情况下,这意味着两个对象存储在相同的内存地址中。public int hashCode()返回调用此方法的对象的哈希码值。 在应用程序的一次执行过程中,哈希码不得更改,但在执行之间可能会更改。
为类生成 equals() 和 hashCode()
在主菜单中,转到 代码 并选择 生成 (Alt+Insert)。
在 生成 弹出窗口中,点击 equals() and hashCode()。
从 模板 列表中选择一个 velocity 模板。
在方法内选择生成的表达式。 将鼠标悬停在问号图标上,以打开提示框,了解每个表达式的优缺点。

点击 下一步。
请选择应当用于确定相等性的字段,然后点击 下一步。
选择要用于计算哈希码值的字段。 您只能从上一步中选择的字段中进行选择(用于确定相等性)。 点击 下一步。
选择包含非空值的字段。 此可选步骤有助于生成的代码避免空值检查,从而提高性能。 点击 完成。
以下代码段显示了覆盖 equals() 和 hashCode() 方法的结果:
Generate getters and setters
IntelliJ IDEA 能为您类中的字段生成存取器和变异器方法(getters 和 setters)。 生成的方法只有一个参数,这是由 JavaBeans API 规定的。
getter 和 setter 方法的名称是由 IntelliJ IDEA 根据您的 代码生成命名偏好设置生成的。
在主菜单中,转到 代码 并选择 生成 (Alt+Insert)。
在 生成 弹出窗口中,点击以下其中一项:
Getter 以生成访问器方法来获取类字段的当前值。
Setter 用于生成设置类字段值的变异方法。
Getter 和 Setter 以生成访问器和修改器方法。
请选择要为其生成 getter 或 setter 的字段,然后点击 OK。
您可以通过点击
添加自定义 getter 或 setter 方法 ,并访问 Getter/Setter Templates对话框。 如果某个字段不在列表中,那么相应的 getter 和 setter 方法已经为其定义。
如果选择了 复制所有注释 选项,则所有适用的注解都会从字段复制到新方法或新方法的参数中。 否则,仅适用的可空性注解将被复制。
以下代码片段展示了为一个包含一个字段的类生成 getter 与 setter 方法的结果 var:
生成 toString()
Java 超类的 toString() 方法 java.lang.Object 返回对象的字符串表示形式。 此方法可用于将任何对象打印到标准输出,例如,快速监控您的代码执行情况。 默认情况下, toString() 返回类的名称,后跟对象的哈希码。 您可以重写它以返回对象字段的值,这样对于您的需要来说可能会更具信息性。
为类重写 toString() 方法
在 代码 菜单上,点击 生成 Alt+Insert。
在 生成 弹出窗口中,点击 toString()。
配置以下内容:
请选择从 模板 列表生成
toString()方法的模板。选择您想在生成的
toString()方法中返回的字段。 默认情况下,所有可用字段都被选中。 点击 选择“无” 生成一个toString()方法,该方法仅返回类名。如有必要,请选中 插入 @Override 复选框。
点击 设置 按钮以打开 toString() 生成设置对话框。 您可以调整行为并 添加自定义模板。
点击 OK。
如果类中已定义 toString() 方法,默认情况下会提示您是否希望在继续之前删除此方法。 您可以使用 当方法已存在时 选项组在 toString() Generation Settings 对话框中更改此行为:可以自动替换现有方法或生成重复方法。
以下代码片段显示了一个定义了多个字段的类生成 toString() 方法的结果:
以下 代码检查 与 toString() 方法相关:
该类未重写“toString()”方法 可用于识别未定义
toString()方法的类。 此检查使用 exclude settings忽略不应被转储的字段的类。 另一项设置是使用正则表达式匹配类名来排除某些类。 默认情况下,该选项用于排除任何异常类。字段未在“toString()” 方法中使用 可用于识别在
toString()方法中未转储的字段。 例如,如果您向类中添加了新字段,但忘记将其添加到toString()方法中。 更改此检查的严重性 以将错误显示为警告。 这将在编辑器中突出显示任何未使用的字段,并在滚动条上以黄色标记指示其位置。
自定义代码生成模板
用于生成 getter 和 setter 的模板,以及 equals()、 hashCode() 和 toString() 方法的模板都是用 Velocity 模板语言编写的。 虽然您无法修改预定义模板,但您可以添加自己的自定义模板以实现必要的行为。
IntelliJ IDEA 为 Velocity 模板提供了以下变量:
以下变量可用于生成 getters 和 setters 的模板:
变量 | 描述 |
|---|---|
| 当前版本的 Java 运行环境 (JRE)。 |
| 当前类。 |
| 提供对各种代码生成辅助方法的访问。 |
| 提供根据当前代码样式格式化名称的功能。 |
| 为其生成 getter 或 setter 的字段。 |
以下变量可用于生成 toString() 方法的模板:
变量 | 描述 |
|---|---|
| 当前版本的 Java 运行环境 (JRE)。 |
| 当前类。 |
| 提供对各种代码生成辅助方法的访问。 |
| 提供根据当前代码样式格式化名称的功能。 |
| 当前类中的字段列表。 |
以下变量可用于生成 equals() 方法的模板:
变量 | 描述 |
|---|---|
| 当前版本的 Java 运行环境 (JRE)。 |
| 当前类。 |
| 提供对各种代码生成辅助方法的访问。 |
| 提供根据当前代码样式格式化名称的功能。 |
| 当前类中的字段列表。 |
| 调用 |
|
|
| 适用时,在超类的 |
| 从向导处传递的选项。 |
| 是否已声明 |
以下变量可用于生成 hashCode() 方法的模板:
变量 | 描述 |
|---|---|
| 当前版本的 Java 运行环境 (JRE)。 |
| 当前类。 |
| 提供对各种代码生成辅助方法的访问。 |
| 提供根据当前代码样式格式化名称的功能。 |
| 当前类中的字段列表。 |
| 是否已声明 |
效率提示
使用代码补全
根据当前上下文,IntelliJ IDEA 可以在 代码补全弹出窗口中建议生成相关代码结构。 例如,当文本光标位于 Java 类中时,代码补全弹出窗口将包含对添加 getters、setters、 equals()、 hashCode() 和 toString() 方法的建议。
