コンストラクターをビルダーに置換
コンストラクターをビルダーに置換 リファクタリングは、コンストラクターを非表示にし、その使用箇所を新しく生成されたビルダークラスまたは既存のビルダークラスへの参照に置き換えるのに役立ちます。
エディターのコンストラクター呼び出しにキャレットを置き、 Alt+Enter を押します。
利用可能なコンテキストアクションのリストから、 コンストラクターをビルダーに置換 を選択します。

開いたダイアログで、必要に応じて、提案された setter 名を変更します。 ビルダーで生成されたフィールドを初期化するかどうかを指定します。
コンストラクター呼び出しでパラメーター値と一致する初期値を指定する場合、 Optional の 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();
}
}
|
コンストラクターをビルダーに置換するダイアログ
このダイアログを使用して、 コンストラクターをビルダーに置換 リファクタリングのオプションを指定します。
項目 | 説明 |
|---|---|
ビルダーに渡すパラメーター | |
パラメーター | この列には、コンストラクターで検出されたパラメーターのリストが表示されます。これらはビルダーフィールドに置き換えられます。 |
フィールド名 | この編集可能な列には、ビルダー内の推奨フィールド名のリストが表示されます。 |
setter 名 | この編集可能な列には、ビルダー内の推奨 setter 名のリストが表示されます。 |
デフォルト値 | この編集可能な列を使用して、フィールドをデフォルト値で初期化します。 |
Optional の setter | フィールドの指定されたデフォルト値がコンストラクター呼び出しのパラメーター値と一致する場合、このチェックボックスを選択すると、ビルダー呼び出しでこのフィールドの setter メソッドが省略されます。 このチェックボックスが選択されていない場合は、対応する setter メソッドが表示されます。 |
ビルダーの名前と場所 | |
新規作成 | このオプションをクリックすると、指定された名前と宛先パッケージを使用して新しいビルダークラスが生成されます。 |
ビルダークラス名 | この編集可能なフィールドには、生成される新しいビルダークラスの推奨名が表示されます。 デフォルトの提案を受け入れるか、新しい名前を入力することができます。 |
新規ビルダーのパッケージ | 宛先パッケージの名前を入力するか、参照ボタンをクリックして 宛先パッケージの選択 ダイアログで探します。 必要なパッケージが存在しない場合は、 |
既存の使用 | 既存のビルダークラスを指定するには、このオプションをクリックします。 |
ビルダークラス名 | ここで、プロジェクト内にすでに存在するビルダークラスの完全修飾名を入力するか、参照ボタンをクリックして名前またはプロジェクトツリービューで検索します。 |