Automatically create builder for class in Eclipse

JavaEclipseBuilder

Java Problem Overview


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".

Java Solutions


Solution 1 - Java

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.

Solution 2 - Java

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

Edit: After 5 years, revisiting this topic, would recommend to use lombok that has become industry standard anyway and is also IDE agnostic ==> would work if your team mates use a variety of IDEs.

Solution 3 - Java

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

> You can set the preferences under:
Window->Preferences->Java->Spark Builder Generator

Solution 4 - Java

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

Solution 5 - Java

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhasanghaforianView Question on Stackoverflow
Solution 1 - JavajacoView Answer on Stackoverflow
Solution 2 - JavaKhanna111View Answer on Stackoverflow
Solution 3 - JavaChristophView Answer on Stackoverflow
Solution 4 - JavaAtmegaView Answer on Stackoverflow
Solution 5 - Javaunique_ptrView Answer on Stackoverflow