web-dev-qa-db-ja.com

Eclipseでクラスのビルダーを自動的に作成する

自動ビルダーを使用して、Eclipseのクラスにビルダー( Joshua Blochのビルダーパターン )を作成する方法はありますか?たとえば、メニューのオプション、プラグインなど。 「Refactor」の下に何も見つかりませんでした。

43
hasanghaforian

たぶん私はパーティーに遅れています。

Eclipse自体は、ビルダーパターンをサポートするコードを生成する方法を提供しません。ただし、機能を強化するためにプラグインを介して拡張できます。

私がこれを使用するこのプラグインがあります:

https://github.com/henningjensen/bpep

19
Khanna111

lombok 注釈を見て、ボイラープレートコードなしでビルダーを生成できます。例えば:

@Builder
public class MyPojo {
    private String name;
}

MyPojoBuilder.builder().name("yourame").build();

制限は、これが抽象クラスでは機能しないように見えることです。

27
jaco

現在、Eclipse Neon.1aリリース(4.6.1)でSpark Builder Generatorを使用していますが、うまく機能しています。

14
Christoph

試す https://github.com/vojtek/write-it-once

package ${cls.package.name};

public class ${cls.shortName}Builder {

public static ${cls.name}Builder builder() {
    return new ${cls.name}Builder();
}
<% for(field in cls.fields) {%>
private ${field.type.name} ${field.name};
<% } %>
<% for(field in cls.fields) {%>
public ${cls.name}Builder ${field.name}(${field.type.name} ${field.name}) {
    this.${field.name} = ${field.name};
    return this;
}
<% } %>
public ${cls.name} build() {
    final ${cls.name} data = new ${cls.name}();
<% for(field in cls.fields) {%>
    data.${field.setter.name}(this.${field.name});
<% } %>
    return data;
}
}
2
Atmega

独自のテンプレートウィンドウ->設定-> Java-> editor-> templatesを追加できます。これはコンテンツの提案でアクティブになりますが、リファクタリングアクションではありません

1
unique_ptr