Automatically create builder for class in Eclipse

守給你的承諾、 提交于 2019-11-28 22:01:48

问题


Is there a way to use an automatic builder to create builder (Joshua Bloch's Builder Pattern) for classes in Eclipse? For example an option in the menu, a plugin or something else. I could not find anything under "Refactor".


回答1:


Maybe I am late to the party.

Eclipse on its own does not provide a way to generate code to support builder pattern. However it can be extended through plugins to enhance the functionality.

There is this plugin that I use this:

https://github.com/henningjensen/bpep




回答2:


You may want to look at lombok annotations to generate builders without the boiler plate code. For example:

@Builder
public class MyPojo {
    private String name;
}

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

The limitation is that this doesn't seem to work with abstract classes.




回答3:


I currently use Spark Builder Generator with Eclipse Neon.1a Release (4.6.1) and it works well.

  • https://marketplace.eclipse.org/content/sparkbuildergenerator
  • https://github.com/helospark/SparkBuilderGenerator



回答4:


Try 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;
}
}



回答5:


You could add your own template window -> preferences -> java -> editor -> templates and this will be activated with the content proposal but not by refactor action



来源:https://stackoverflow.com/questions/29493898/automatically-create-builder-for-class-in-eclipse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!