llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

生成代码

IntelliJ IDEA 提供多种生成常用代码构造和重复元素的方法,帮助您提高生产力。 这些可以是创建新文件时使用的 文件模板 、根据上下文不同应用的自定义或预定义 实时模板 、各种包装器或字符的自动配对。

此外,IntelliJ IDEA 提供 代码补全和 Emmet支持。

本主题介绍了生成特定于 Java 的标准代码结构的方法:构造函数、方法重写和实现、getter 和 setter 等。 前往 代码 | 生成 Alt+Insert 以打开可生成构造的弹出菜单。

生成构造函数

IntelliJ IDEA 可以生成一个构造函数,该构造函数使用相应参数的值来初始化特定类字段。

为类生成构造函数

  1. 在主菜单中,转到 代码 ,然后选择 生成 (Alt+Insert)。

  2. 在 生成 弹出窗口中,点击 构造函数。

  3. 如果类包含字段,请选择要由构造函数初始化的字段,然后点击 OK。

以下代码片段显示了为类生成构造函数的结果:

public class MyClass { int aInteger; double bDouble; public MyClass(int myAIntegerParam, double myBDoubleParam) { aInteger = myAIntegerParam; bDouble = myBDoubleParam; } }

生成委托方法

IntelliJ IDEA 可以生成将行为委托给您类的字段或方法的方法。 这种方法使得在不直接暴露字段或方法的情况下,可以访问字段或方法的数据。

为类生成委托方法

  1. 在主菜单中,转到 代码 ,然后选择 生成 (Alt+Insert)。

  2. 在 生成 弹出窗口中,点击 委托方法。

  3. 选择目标字段或方法,然后点击 OK。

  4. 选择您希望委托的方法,然后点击 OK。

以下代码片段显示了在另一个类中委托 get(i) 方法和 Calendar 类的结果:

Calendar calendar; public int get(int i) { return calendar.get(i); }

生成 equals() 和 hashCode() 方法

Java 超类 java.lang.Object 提供了两种用于比较对象的方法:

  • public boolean equals(Object obj) 返回 true 如果传递给它作为参数的对象与调用此方法的对象 相等。 默认情况下,这意味着两个对象存储在相同的内存地址中。

  • public int hashCode() 返回调用此方法的对象的哈希码值。 在应用程序的一次执行过程中,哈希码不得更改,但在执行之间可能会更改。

为类生成 equals() 和 hashCode()

  1. 在主菜单中,转到 代码 ,然后选择 生成 (Alt+Insert)。

  2. 在 生成 弹出窗口中,点击 equals() 与 hashCode()。

  3. 从 模板 列表中选择一个 velocity 模板。

    您还可以点击 模板设置 打开 模板对话框,在那里您可以选择一个现有的模板或 创建一个自定义模板。

  4. 在方法内选择生成的表达式。 将鼠标悬停在问号图标上,以打开提示框,了解每个表达式的优缺点。

    生成 equals() 和 hashCode() 向导
  5. 点击 下一步。

  6. 请选择应当用于确定相等性的字段,然后点击 下一步。

  7. 选择要用于计算哈希码值的字段。 您只能从上一步中选择的字段中进行选择(用于确定相等性)。 点击 下一步。

  8. 选择包含非空值的字段。 此可选步骤有助于生成的代码避免空值检查,从而提高性能。 点击 完成。

以下代码段显示了覆盖 equals() 和 hashCode() 方法的结果:

public boolean equals(Object o){ if(this==o)return true; if(o==null||getClass()!=o.getClass())return false; FixedRateCurrencyExchangeService that=(FixedRateCurrencyExchangeService)o; if(Double.compare(that.rate,rate)!=0)return false; return true; } public int hashCode(){ long temp=rate!=+0.0d?Double.doubleToLongBits(rate):0L; return int(temp^(temp>>>32)); }

生成 getter 和 setter

IntelliJ IDEA 能为您类中的字段生成存取器和变异器方法(getters 和 setters)。 生成的方法只有一个参数,这是由 JavaBeans API 规定的。

getter 和 setter 方法的名称是由 IntelliJ IDEA 根据您的 代码生成命名偏好设置生成的。

  1. 在主菜单中,转到 代码 ,然后选择 生成 (Alt+Insert)。

  2. 在 生成 弹出窗口中,点击以下其中一项:

    • Getter 以生成访问器方法来获取类字段的当前值。

    • Setter 用于生成设置类字段值的变异方法。

    • Getter 和 Setter 以生成访问器和修改器方法。

  3. 请选择要为其生成 getter 或 setter 的字段,然后点击 OK。

    您可以通过点击 浏览按钮 添加自定义 getter 或 setter 方法 ,并访问 Getter/Setter Templates对话框。 如果某个字段不在列表中,那么相应的 getter 和 setter 方法已经为其定义。

    如果选择 复制所有注解 选项,字段中的所有适用注解都将复制到新方法或新方法的形参中。 否则,仅复制适用的为 null 性注解。

以下代码片段展示了为一个包含一个字段的类生成 getter 与 setter 方法的结果 var:

public class MyClass { int field; public int getField() { return field; } public void setField(int field) { this.field = field; } }

生成 toString()

Java 超类的 toString() 方法 java.lang.Object 返回对象的字符串表示形式。 此方法可用于将任何对象打印到标准输出,例如,快速监控您的代码执行情况。 默认情况下, toString() 返回类的名称,后跟对象的哈希码。 您可以重写它以返回对象字段的值,这样对于您的需要来说可能会更具信息性。

为类重写 toString() 方法

  1. 在 代码 菜单上,点击 生成 Alt+Insert。

  2. 在 生成 弹出窗口中,点击 toString()。

  3. 配置以下内容:

    • 请选择从 模板 列表生成 toString() 方法的模板。

    • 选择您想在生成的 toString() 方法中返回的字段。 按住 Shift 以选择多个成员。 默认情况下,所有可用字段都被选中。 点击 无选择 可生成一个 toString() 方法,仅返回类名。

    • 如有必要,请选中 插入 @Override 复选框。

    • 点击 设置 按钮以打开 toString() 生成设置对话框。 您可以调整行为并 添加自定义模板。

  4. 点击 OK。

如果类中默认已定义 toString() 方法,在继续之前将提示您是否要删除该方法。 您可以使用 toString() 生成设置 对话框中的 当方法已存在时 选项组来更改此行为:自动替换现有方法,或生成重复的方法。

以下代码片段显示了一个定义了多个字段的类生成 toString() 方法的结果:

public class MyClass { private String name; private String url; private int port; private String[] validIPs; ... public String toString() { return "MyClass{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", port=" + port + ", validIps=" + Arrays.toString(validIps) + '}'; } ... }

以下 代码检查 与 toString() 方法相关:

  • 类未重写 'toString()' 方法 可用于识别未定义 toString() 方法的类。 此检查使用 exclude settings忽略不应被转储的字段的类。 另一项设置是使用正则表达式匹配类名来排除某些类。 默认情况下,该选项用于排除任何异常类。

  • 字段未在 'toString()' 方法中使用 可用于识别在 toString() 方法中未转储的字段。 例如,如果您向类中添加了新字段,但忘记将其添加到 toString() 方法中。 更改此检查的严重性 以将错误显示为警告。 这将在编辑器中高亮显示任何未使用的字段,并在滚动条上以黄色标记指示其位置。

自定义代码生成模板

用于生成 getter 和 setter 的模板,以及 equals()、 hashCode() 和 toString() 方法的模板都是用 Velocity 模板语言编写的。 虽然您无法修改预定义模板,但您可以添加自己的自定义模板以实现必要的行为。

IntelliJ IDEA 为 Velocity 模板提供了以下变量:

以下变量可用于生成 getters 和 setters 的模板:

变量

描述

$java_version

Java 运行时环境 (JRE) 的当前版本。

$class

当前类。

$helper

提供对各种代码生成帮助程序方法的访问。

$settings

提供根据当前代码样式设置名称格式的能力。

$field

为其生成 getter 或 setter 的字段。

以下变量可用于生成 toString() 方法的模板:

变量

描述

$java_version

Java 运行时环境 (JRE) 的当前版本。

$class

当前类。

$helper

提供对各种代码生成帮助程序方法的访问。

$settings

提供根据当前代码样式设置名称格式的能力。

$fields

当前类中的字段列表。

以下变量可用于生成 equals() 方法的模板:

变量

描述

$java_version

Java 运行时环境 (JRE) 的当前版本。

$class

当前类。

$helper

提供对各种代码生成帮助程序方法的访问。

$settings

提供根据当前代码样式设置名称格式的能力。

$fields

当前类中的字段列表。

$instanceBaseName

调用 equals() 方法的对象的预定义名称。

$baseParamName

equals() 方法参数的预定义名称。

$superParamName

适用时,在超类的 equals() 方法中的参数名。

$checkParameterWithInstanceof

从向导处传递的选项。

$superHasEquals

超类是否已声明 equals()。

以下变量可用于生成 hashCode() 方法的模板:

变量

描述

$java_version

Java 运行时环境 (JRE) 的当前版本。

$class

当前类。

$helper

提供对各种代码生成帮助程序方法的访问。

$settings

提供根据当前代码样式设置名称格式的能力。

$fields

当前类中的字段列表。

$superHasHashCode

超类是否已声明 hashCode()。

效率提示

使用代码补全

根据当前上下文,IntelliJ IDEA 可以在 代码补全弹出窗口中建议生成相关代码结构。 例如,当文本光标位于 Java 类中时,代码补全弹出窗口将包含对添加 getters、setters、 equals()、 hashCode() 和 toString() 方法的建议。

在代码补全弹出窗口中生成 getters 和 toString()
    2026年 11月 3日