将构造函数替换为构建器
将构造函数替换为构建器 重构有助于隐藏构造函数,将其用对新生成的构建器类或现有构建器类的引用替代。
请将文本光标放在编辑器中的构造函数调用处,然后按 Alt+Enter。
从可用的上下文操作列表中选择 将构造函数替换为构建器。

在打开的对话框中,如果需要,修改建议的 setter 名称。 指定您是否要在构建器中初始化生成的字段。
如果指定的初始值与构造函数调用中的参数值匹配,您可以通过选中 可选Setter 复选框跳过该参数的 setter 方法。 您还可以指定是创建新的构建器还是使用现有的构建器。
预览并应用更改。
示例
之前 | 之后 |
|---|---|
// 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日