次のようにチェーンできるように、セッターが必要です。
myPojo.setX(x).setY(y);
通常、私は Eclipse でセッターを生成しますが、残念ながらcode template
セッターの場合、署名ではなく、セッターの本体のみを変更できます。
上記を完了する最も簡単な方法は何ですか? 検索と置換 + 手動編集以外に? :)
次のようにチェーンできるように、セッターが必要です。
myPojo.setX(x).setY(y);
通常、私は Eclipse でセッターを生成しますが、残念ながらcode template
セッターの場合、署名ではなく、セッターの本体のみを変更できます。
上記を完了する最も簡単な方法は何ですか? 検索と置換 + 手動編集以外に? :)
追加のインストールを必要としない一種のパッチを提供できます。
ウィンドウ/設定/Java/コード スタイル/コード テンプレートに移動します。「setter body」テンプレートを次のように編集します。
${field} = ${param};
return this;
「ゲッターとセッターの生成」を実行すると、次のようなセッターが作成されます。
public void setMyField(String myField) {
this.myField = myField;
return this;
}
メソッドの型が であるため、これは明らかにコンパイル エラーを引き起こしますvoid
。Ctrl-F
しかし、すべての 'public void set'をストライクして置き換えることができますpublic YourClassName set
。
パッチですが動作します...
この目的のためにエディター/テンプレートを使用できます。新しいテンプレートを定義するには、「設定」ウィンドウを開き、次に「Java」->「エディター」->「テンプレート」を開きます。このウィンドウで、新しいテンプレートを定義して名前を付けることができます。例えば:
public ${enclosing_type} setName(${argType} name) {
this.name = name;
return this;
}
settrなどの名前を付けます。次に、「settr」と入力してからCtrl-Spaceを押すことにより、Javaコードでこのテンプレートを使用できます。
fluent-builders-generator プラグインを使用して、必要な方法でセッターを生成できる場合があります。
JavaForger では、以下のテンプレートを使用してセッターを生成できます。これは、ゲッターとセッターを生成するすべてのクラスに対してメイン メソッドを実行する必要があることを意味します。
<#list fields as field>
/**
* Sets the ${field.name} of the {@link ${class.name}}.
*
* @param ${field.name} The input {@link ${field.nonPrimitiveType}}.
*/
public ${class.name} ${field.setter}(${field.type} ${field.name}) {
this.${field.name} = ${field.name};
return this;
}
</#list>
以下のコードは、「myClass.java」というクラスに対して上記のテンプレート (setter.javat) を実行し、生成されたコードを inputclass とマージします。既存のセッターが存在する場合はオーバーライドします。
JavaForgerConfiguration config = JavaForgerConfiguration.builder()
.withTemplate("setters.javat")
.withMergeClassProvider(ClassProvider.fromInputClass(s -> s))
.withOverride(true)
.build();
JavaForger.execute(config, "myClass.java");
「setters.javat」の場所を次のように追加する必要があります。
StaticJavaForgerConfiguration.addTemplateLocation("my/location/");
プロジェクトはhttps://github.com/daanvdh/JavaForgerにあります。