IntelliJ IDEA 2025.1 Help

将构造函数替换为构建器

将构造函数替换为构建器 重构有助于隐藏构造函数,将其用对新生成的构建器类或现有构建器类的引用替代。

  1. 请将文本光标放在编辑器中的构造函数调用处,然后按 Alt+Enter

  2. 从可用的上下文操作列表中选择 将构造函数替换为构建器

    将构造函数替换为构建器
  3. 在打开的对话框中,如果需要,修改建议的 setter 名称。 指定您是否要在构建器中初始化生成的字段。

    如果指定的初始值与构造函数调用中的参数值匹配,您可以通过选中 可选Setter 复选框跳过该参数的 setter 方法。 您还可以指定是创建新的构建器还是使用现有的构建器。

  4. 预览并应用更改。

示例

之前

之后

// UIConstraint.java public class UIConstraint { private int gridX; private int gridY; private int gridWidth; private int gridHeight; private double weightX; private double weightY; UIConstraint(int gridX, int gridY, int gridWidth, int gridHeight, double weightX, double weightY) { this.gridX = gridX; this.gridY = gridY; this.gridWidth = gridWidth; this.gridHeight = gridHeight; this.weightX = weightX; this.weightY = weightY; } }
// UIConstraint.java (unchanged) public class UIConstraint { private int gridX; private int gridY; private int gridWidth; private int gridHeight; private double weightX; private double weightY; UIConstraint(int gridX, int gridY, int gridWidth, int gridHeight, double weightX, double weightY) { this.gridX = gridX; this.gridY = gridY; this.gridWidth = gridWidth; this.gridHeight = gridHeight; this.weightX = weightX; this.weightY = weightY; } } // UIConstraintBuilder.java public class UIConstraintBuilder { private int gridX = 0; private int gridY = 0; private int gridWidth = 1; private int gridHeight = 1; private double weightX = 0.0; private double weightY = 0.0; public UIConstraintBuilder setGridX(int gridX) { this.gridX = gridX; return this; } public UIConstraintBuilder setGridY(int gridY) { this.gridY = gridY; return this; } public UIConstraintBuilder setGridWidth(int gridWidth) { this.gridWidth = gridWidth; return this; } public UIConstraintBuilder setGridHeight(int gridHeight) { this.gridHeight = gridHeight; return this; } public UIConstraintBuilder setWeightX(double weightX) { this.weightX = weightX; return this; } public UIConstraintBuilder setWeightY(double weightY) { this.weightY = weightY; return this; } public UIConstraint createUIConstraint() { return new UIConstraint(gridX, gridY, gridWidth, gridHeight, weightX, weightY); } } // Test.java public class Test { public void main(String[] args) { // Default values are used for omitted fields final UIConstraint uiConstraint = new UIConstraintBuilder() .setGridWidth(2) .setWeightY(1.0) .createUIConstraint(); } }

将构造函数替换为生成器对话框

请使用此对话框指定 将构造函数替换为构建器 重构的选项。

条目

描述

要传递到构建器的形参

形参

此列显示在构造函数中检测到的参数列表,这些参数将被替换为 builder 字段。

字段名称

此可编辑列显示了构建器中建议的字段名列表。

Setter 名称

此可编辑列显示了构建器中建议的 setter 名称列表。

默认值

使用此可编辑的列来初始化字段的默认值。

可选 Setter

如果字段的指定默认值与构造函数调用中的参数值匹配,则选中此复选框会导致在构建器调用中省略该字段的 setter 方法。 如果未选中此复选框,则仍会显示相应的 setter 方法。

构建器名称及位置

新建

请点击此选项以生成新的构建器类,指定名称和目标包。

构建器类名

此可编辑字段显示要生成的新构建器类的建议名称。 您可以接受默认建议或输入新名称。

新构建器的软件包

输入目标包的名称,或点击浏览按钮在 选择目标软件包 对话框中定位它。 如果所需的包不存在,请点击 创建一个新包。

使用已有

点击此选项以指定现有的 builder 类。

构建器类名

在此输入项目中已存在的构建器类的完全限定名称,或点击浏览按钮通过名称或在项目树视图中查找它。

最后修改日期: 2025年 4月 24日